msperlin commited on
Commit
2cb4850
·
1 Parent(s): f5e3a52

improved readme

Browse files
README.md CHANGED
@@ -8,198 +8,102 @@ metrics:
8
  base_model:
9
  - yiyanghkust/finbert-pretrain
10
  library_name: transformers
 
 
 
 
11
  ---
12
- # Model Card for Model ID
13
 
14
- <!-- Provide a quick summary of what the model is/does. -->
15
 
16
- This modelcard aims to be a base template for new models. It has been generated using [this raw template](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/templates/modelcard_template.md?plain=1).
17
 
18
  ## Model Details
19
 
20
- ### Model Description
 
 
 
21
 
22
- <!-- Provide a longer summary of what this model is. -->
23
 
 
24
 
25
-
26
- - **Developed by:** [More Information Needed]
27
- - **Funded by [optional]:** [More Information Needed]
28
- - **Shared by [optional]:** [More Information Needed]
29
- - **Model type:** [More Information Needed]
30
- - **Language(s) (NLP):** [More Information Needed]
31
- - **License:** [More Information Needed]
32
- - **Finetuned from model [optional]:** [More Information Needed]
33
-
34
- ### Model Sources [optional]
35
-
36
- <!-- Provide the basic links for the model. -->
37
-
38
- - **Repository:** [More Information Needed]
39
- - **Paper [optional]:** [More Information Needed]
40
- - **Demo [optional]:** [More Information Needed]
41
 
42
  ## Uses
43
 
44
- <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
45
-
46
- ### Direct Use
47
-
48
- <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
49
-
50
- [More Information Needed]
51
-
52
- ### Downstream Use [optional]
53
-
54
- <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
55
-
56
- [More Information Needed]
57
-
58
- ### Out-of-Scope Use
59
-
60
- <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
61
-
62
- [More Information Needed]
63
-
64
- ## Bias, Risks, and Limitations
65
-
66
- <!-- This section is meant to convey both technical and sociotechnical limitations. -->
67
-
68
- [More Information Needed]
69
-
70
- ### Recommendations
71
-
72
- <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
73
-
74
- Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
75
 
76
  ## How to Get Started with the Model
77
 
78
- Use the code below to get started with the model.
79
-
80
- [More Information Needed]
81
-
82
- ## Training Details
83
-
84
- ### Training Data
85
-
86
- <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
87
-
88
- [More Information Needed]
89
-
90
- ### Training Procedure
91
-
92
- <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
93
-
94
- #### Preprocessing [optional]
95
-
96
- [More Information Needed]
97
-
98
-
99
- #### Training Hyperparameters
100
-
101
- - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
102
-
103
- #### Speeds, Sizes, Times [optional]
104
-
105
- <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
106
-
107
- [More Information Needed]
108
-
109
- ## Evaluation
110
-
111
- <!-- This section describes the evaluation protocols and provides the results. -->
112
-
113
- ### Testing Data, Factors & Metrics
114
-
115
- #### Testing Data
116
-
117
- <!-- This should link to a Dataset Card if possible. -->
118
-
119
- [More Information Needed]
120
-
121
- #### Factors
122
-
123
- <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
124
-
125
- [More Information Needed]
126
-
127
- #### Metrics
128
-
129
- <!-- These are the evaluation metrics being used, ideally with a description of why. -->
130
-
131
- [More Information Needed]
132
-
133
- ### Results
134
-
135
- [More Information Needed]
136
-
137
- #### Summary
138
-
139
-
140
-
141
- ## Model Examination [optional]
142
-
143
- <!-- Relevant interpretability work for the model goes here -->
144
-
145
- [More Information Needed]
146
-
147
- ## Environmental Impact
148
-
149
- <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
150
-
151
- Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
152
-
153
- - **Hardware Type:** [More Information Needed]
154
- - **Hours used:** [More Information Needed]
155
- - **Cloud Provider:** [More Information Needed]
156
- - **Compute Region:** [More Information Needed]
157
- - **Carbon Emitted:** [More Information Needed]
158
-
159
- ## Technical Specifications [optional]
160
-
161
- ### Model Architecture and Objective
162
-
163
- [More Information Needed]
164
-
165
- ### Compute Infrastructure
166
-
167
- [More Information Needed]
168
-
169
- #### Hardware
170
-
171
- [More Information Needed]
172
-
173
- #### Software
174
 
175
- [More Information Needed]
 
 
176
 
177
- ## Citation [optional]
 
 
178
 
179
- <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
 
 
180
 
181
- **BibTeX:**
 
182
 
183
- [More Information Needed]
 
 
 
 
 
 
 
184
 
185
- **APA:**
 
 
 
186
 
187
- [More Information Needed]
 
188
 
189
- ## Glossary [optional]
 
190
 
191
- <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
192
 
193
- [More Information Needed]
194
 
195
- ## More Information [optional]
 
 
 
 
196
 
197
- [More Information Needed]
 
 
 
 
 
 
198
 
199
- ## Model Card Authors [optional]
 
 
200
 
201
- [More Information Needed]
 
 
 
202
 
203
- ## Model Card Contact
204
 
205
- [More Information Needed]
 
 
 
8
  base_model:
9
  - yiyanghkust/finbert-pretrain
10
  library_name: transformers
11
+ tags:
12
+ - finance
13
+ - ai-detector
14
+ - sequence-classification
15
  ---
 
16
 
17
+ # FinBERT AI Detector for Financial Texts
18
 
19
+ This model is a fine-tuned version of `yiyanghkust/finbert-pretrain` designed specifically to detect AI-generated text in financial documents, such as corporate annual reports (e.g., 10-K filings).
20
 
21
  ## Model Details
22
 
23
+ - **Base Model:** `yiyanghkust/finbert-pretrain`
24
+ - **Task:** Sequence Classification (Binary: Human vs. AI-Generated)
25
+ - **Language:** English
26
+ - **License:** MIT
27
 
28
+ ## Training Data and Method
29
 
30
+ The model was trained on a custom dataset compiled from human-written financial texts (derived from SEC annual reports) and AI-generated equivalents.
31
 
32
+ - **Data Generation:** Actual human texts from corporate annual reports were compiled. State-of-the-art Large Language Models (LLMs), including OpenAI's ChatGPT, Google's Gemini, and Anthropic's Claude, were then prompted to rewrite these sections or generate similar artificial financial texts.
33
+ - **Training Method:** The base `finbert-pretrain` model—already pre-trained on a large corpus of financial text—was fine-tuned on this mixed dataset to classify whether a given segment of text is human-written or generated by an AI.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  ## Uses
36
 
37
+ This model is intended for researchers, financial analysts, and auditors who want to verify the authenticity of corporate disclosures and determine if a financial text (like an annual report or an earnings call transcript) was written by an AI or a human.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
  ## How to Get Started with the Model
40
 
41
+ You can use this model with the `transformers` library. Here is a quick example of how to make predictions using Python and PyTorch:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
+ ```python
44
+ import torch
45
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
46
 
47
+ # Load the model and tokenizer (replace 'username/model-name' with your Hugging Face model ID)
48
+ model_id = "your-username/your-model-name"
49
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
50
 
51
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
52
+ model = AutoModelForSequenceClassification.from_pretrained(model_id).to(device)
53
+ model.eval()
54
 
55
+ # Sample text to test
56
+ text = "The Tax Cuts and Jobs Act enacted in 2017 in the United States, significantly changed the tax rules applicable to U.S.-domiciled corporations. Changes such as lower corporate tax rates, full expensing for qualified property, taxation of offshore earnings, limitations on interest expense deductions, and changes to the municipal bond tax exemption may impact demand for our products and services."
57
 
58
+ # Preprocess the input
59
+ inputs = tokenizer(
60
+ text,
61
+ return_tensors="pt",
62
+ truncation=True,
63
+ max_length=512,
64
+ padding=True
65
+ ).to(device)
66
 
67
+ # Run inference
68
+ with torch.no_grad():
69
+ outputs = model(**inputs)
70
+ probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1)
71
 
72
+ # Index 1 typically corresponds to "AI-generated" (Verify with model.config.id2label if needed)
73
+ prob_ai = probabilities[0][1].item()
74
 
75
+ print(f"Probability of being AI-generated: {prob_ai:.2%}")
76
+ ```
77
 
78
+ ### Batch Processing Example
79
 
80
+ For larger text datasets, you can generate predictions in batches to properly utilize GPU acceleration:
81
 
82
+ ```python
83
+ texts = [
84
+ "Company revenue grew by 15% due to increased demand in the European market.",
85
+ "A machine learning model generated this text based on recent financial statements."
86
+ ]
87
 
88
+ inputs = tokenizer(
89
+ texts,
90
+ return_tensors="pt",
91
+ truncation=True,
92
+ max_length=512,
93
+ padding=True
94
+ ).to(device)
95
 
96
+ with torch.no_grad():
97
+ outputs = model(**inputs)
98
+ probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1)
99
 
100
+ probs_ai = probabilities[:, 1].tolist()
101
+ for text, prob in zip(texts, probs_ai):
102
+ print(f"AI Probability: {prob:.2%} - Text: {text}")
103
+ ```
104
 
105
+ ## Intended Use & Limitations
106
 
107
+ - **Intended Usage:** Analyzing formal financial reports, press releases, corporate filings, and similar structured financial disclosures.
108
+ - **Limitations:** The model is optimized specifically for the formal, complex tone of financial documents. Its accuracy may be lower when applied to texts outside the financial domain, such as social media posts, casual emails, news articles, or creative text.
109
+ - **Length Constraint:** The underlying standard FinBERT architecture implies a maximum sequence length of 512 tokens. Texts longer than this will be truncated.
colab-notebooks/testing-fin-ai-detector.ipynb CHANGED
@@ -1 +1,608 @@
1
- {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyMlpd3OM9jBfwFJVtp5BDWy"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"widgets":{"application/vnd.jupyter.widget-state+json":{"0bcf00c2850b4166b19fa2cc67b2c316":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_f9fc8866d45d4488849542210285a0f6","IPY_MODEL_ac892e73e2f146eb93ae1501a88bd42a","IPY_MODEL_68f442f24a8d4009a7dc629bd8e523ec"],"layout":"IPY_MODEL_b006d255aefa465e9192dcf701587a77"}},"f9fc8866d45d4488849542210285a0f6":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_57fd3787e2cd49cdbbb85d4fbfa289e4","placeholder":"​","style":"IPY_MODEL_db5a306e5c8042e89d63144789306505","value":"Loading weights: 100%"}},"ac892e73e2f146eb93ae1501a88bd42a":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_18ddc56f9a3f4ca0bf9f9234ddc1cf43","max":201,"min":0,"orientation":"horizontal","style":"IPY_MODEL_68b3487aabe245c7a868dd04ca88da73","value":201}},"68f442f24a8d4009a7dc629bd8e523ec":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_67061d2557144f488710cebd793bb96b","placeholder":"​","style":"IPY_MODEL_f3e0fbc3cf534e3ea70089599ccbde10","value":" 201/201 [00:00&lt;00:00, 513.14it/s, Materializing param=classifier.weight]"}},"b006d255aefa465e9192dcf701587a77":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"57fd3787e2cd49cdbbb85d4fbfa289e4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"db5a306e5c8042e89d63144789306505":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"18ddc56f9a3f4ca0bf9f9234ddc1cf43":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"68b3487aabe245c7a868dd04ca88da73":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"67061d2557144f488710cebd793bb96b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f3e0fbc3cf534e3ea70089599ccbde10":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"cells":[{"cell_type":"code","execution_count":55,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":49,"referenced_widgets":["0bcf00c2850b4166b19fa2cc67b2c316","f9fc8866d45d4488849542210285a0f6","ac892e73e2f146eb93ae1501a88bd42a","68f442f24a8d4009a7dc629bd8e523ec","b006d255aefa465e9192dcf701587a77","57fd3787e2cd49cdbbb85d4fbfa289e4","db5a306e5c8042e89d63144789306505","18ddc56f9a3f4ca0bf9f9234ddc1cf43","68b3487aabe245c7a868dd04ca88da73","67061d2557144f488710cebd793bb96b","f3e0fbc3cf534e3ea70089599ccbde10"]},"id":"DQnP_uKC0HZG","outputId":"89b3ed6b-011f-491d-e006-1aa5fc4335ab","executionInfo":{"status":"ok","timestamp":1774618900263,"user_tz":180,"elapsed":1301,"user":{"displayName":"Marcelo Perlin","userId":"18075542091515264462"}}},"outputs":[{"output_type":"display_data","data":{"text/plain":["Loading weights: 0%| | 0/201 [00:00<?, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"0bcf00c2850b4166b19fa2cc67b2c316"}},"metadata":{}}],"source":["# Use a pipeline as a high-level helper\n","from transformers import pipeline\n","\n","pipe = pipeline(\"text-classification\", model=\"msperlin/finbert-ai-detector\")"]},{"cell_type":"code","source":["human_text = \"the last trading day of the immediately preceding calendar quarter is greater than or equal to 130% of the conversion price on each applicable trading day; (2) during the five business day period after any 10 consecutive trading day period (the measurement period) in which the trading price per $1,000 principal amount of notes for each trading day of the measurement period was less than 98% of the product of the last reported sale price of our common stock and the conversion rate on each such trading day; or (3) upon 51 the occurrence of specified corporate events. On or after June 1, 2026 and until the close of business on the business day immediately preceding the maturity date, holders may convert their notes at any time, regardless of the foregoing circumstances. Upon conversion, we will pay or deliver, as the case may be, cash, shares of our common stock or a combination of cash and shares of the our common stock, at our election. During the fourth quarter of 2017, none of the conversion conditions were satisfied and as a result, the 2.125% Notes are not eligible for conversion during the first calendar quarter of 2018.We may not redeem the notes prior to the maturity date, and no sinking fund is provided for the notes.\"\n","\n","ai_text= \"The conditions for conversion are met if: (1) the reported closing price of our common stock on the final trading day of the immediately preceding calendar quarter equals or exceeds 130% of the then-effective conversion price on each relevant trading day; (2) during the five business days immediately following any ten consecutive trading day period (hereinafter, the measurement period) wherein the daily trading price per $1,000 principal amount of notes throughout such measurement period was less than 98% of the product of the last reported sale price of our common stock and the conversion rate applicable on each such trading day; or (3) upon the occurrence of certain specified corporate events. Commencing June 1, 2026, and continuing through the close of business on the business day immediately preceding the maturity date, holders shall be entitled to convert their notes at any time, irrespective of the aforementioned conditions. Upon any such conversion, we retain the sole discretion to satisfy the conversion obligation by delivering cash, shares of our common stock, or a combination thereof. Throughout the fourth fiscal quarter of 2017, none of the requisite conversion conditions were met, thereby rendering the 2.125% Notes ineligible for conversion during the first calendar quarter of 2018. The notes are not subject to redemption by the Company prior to their stated maturity date, nor is any sinking fund provision established for them. The initial conversion rate is stipulated at 125.0031 shares of common stock per $1,000 principal amount of notes, corresponding to an initial conversion price of approximately $8.00 per share of common stock.\"\n","\n"],"metadata":{"id":"m-vN1Z6eXGLN","executionInfo":{"status":"ok","timestamp":1774618900269,"user_tz":180,"elapsed":3,"user":{"displayName":"Marcelo Perlin","userId":"18075542091515264462"}}},"execution_count":56,"outputs":[]},{"cell_type":"code","source":["import re\n","\n","def clean_financial_text(text):\n"," # 1. Standardize whitespace\n"," text = re.sub(r'\\\\s+', ' ', text)\n","\n"," # 2. Remove typical PDF conversion artifacts (e.g., Page X of Y)\n"," text = re.sub(r'Page \\d+ of \\d+', '', text, flags=re.IGNORECASE)\n","\n"," # 3. Keep common financial/punctuation non-ASCII, strip the rest\n"," # This regex keeps basic ASCII + common currency + accented Latin-1\n"," # Adjust if you're specifically looking for smart quotes as AI markers\n"," text = \"\".join(i for i in text if ord(i) < 128 or i in \"€£¥©®™áéíóúçÁÉÍÓÚÇ\")\n","\n"," # 20260326 dont converto to lower case\n"," #text = text.lower()\n","\n"," # 4. Strip leading/trailing whitespace\n"," text = text.strip()\n","\n"," return text"],"metadata":{"id":"a9flBHWxZzCW","executionInfo":{"status":"ok","timestamp":1774618900287,"user_tz":180,"elapsed":14,"user":{"displayName":"Marcelo Perlin","userId":"18075542091515264462"}}},"execution_count":57,"outputs":[]},{"cell_type":"code","source":["#human_text = clean_financial_text(human_text)\n","#ai_text = clean_financial_text(ai_text)\n","\n","res_human = pipe(human_text)\n","res_ai = pipe(ai_text)\n","\n","# Label 0 is human written, Label 1 is AI written\n","print(f\"Result for human text: {res_human}\")\n","print(f\"Result for AI text: {res_ai}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"3QOYWfy3Xf2y","executionInfo":{"status":"ok","timestamp":1774618946943,"user_tz":180,"elapsed":1909,"user":{"displayName":"Marcelo Perlin","userId":"18075542091515264462"}},"outputId":"095ccc6b-28c3-4cac-ab05-1b29dd0e92c4"},"execution_count":60,"outputs":[{"output_type":"stream","name":"stdout","text":["Result for human text: [{'label': 'LABEL_0', 'score': 0.8389487862586975}]\n","Result for AI text: [{'label': 'LABEL_1', 'score': 0.9915664792060852}]\n"]}]}]}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {
7
+ "colab": {
8
+ "base_uri": "https://localhost:8080/",
9
+ "height": 49,
10
+ "referenced_widgets": [
11
+ "0bcf00c2850b4166b19fa2cc67b2c316",
12
+ "f9fc8866d45d4488849542210285a0f6",
13
+ "ac892e73e2f146eb93ae1501a88bd42a",
14
+ "68f442f24a8d4009a7dc629bd8e523ec",
15
+ "b006d255aefa465e9192dcf701587a77",
16
+ "57fd3787e2cd49cdbbb85d4fbfa289e4",
17
+ "db5a306e5c8042e89d63144789306505",
18
+ "18ddc56f9a3f4ca0bf9f9234ddc1cf43",
19
+ "68b3487aabe245c7a868dd04ca88da73",
20
+ "67061d2557144f488710cebd793bb96b",
21
+ "f3e0fbc3cf534e3ea70089599ccbde10"
22
+ ]
23
+ },
24
+ "executionInfo": {
25
+ "elapsed": 1301,
26
+ "status": "ok",
27
+ "timestamp": 1774618900263,
28
+ "user": {
29
+ "displayName": "Marcelo Perlin",
30
+ "userId": "18075542091515264462"
31
+ },
32
+ "user_tz": 180
33
+ },
34
+ "id": "DQnP_uKC0HZG",
35
+ "outputId": "89b3ed6b-011f-491d-e006-1aa5fc4335ab"
36
+ },
37
+ "outputs": [
38
+ {
39
+ "name": "stderr",
40
+ "output_type": "stream",
41
+ "text": [
42
+ "/usr/local/lib/python3.12/dist-packages/huggingface_hub/utils/_auth.py:104: UserWarning: \n",
43
+ "Error while fetching `HF_TOKEN` secret value from your vault: 'Requesting secret HF_TOKEN timed out. Secrets can only be fetched when running from the Colab UI.'.\n",
44
+ "You are not authenticated with the Hugging Face Hub in this notebook.\n",
45
+ "If the error persists, please let us know by opening an issue on GitHub (https://github.com/huggingface/huggingface_hub/issues/new).\n",
46
+ " warnings.warn(\n",
47
+ "Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n",
48
+ "WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n"
49
+ ]
50
+ },
51
+ {
52
+ "data": {
53
+ "application/vnd.jupyter.widget-view+json": {
54
+ "model_id": "8aaed08ad5424985ab9c188b43296373",
55
+ "version_major": 2,
56
+ "version_minor": 0
57
+ },
58
+ "text/plain": [
59
+ "config.json: 0%| | 0.00/739 [00:00<?, ?B/s]"
60
+ ]
61
+ },
62
+ "metadata": {},
63
+ "output_type": "display_data"
64
+ },
65
+ {
66
+ "data": {
67
+ "application/vnd.jupyter.widget-view+json": {
68
+ "model_id": "ab6661749fb04bec9d00cd9ee9254cf1",
69
+ "version_major": 2,
70
+ "version_minor": 0
71
+ },
72
+ "text/plain": [
73
+ "model.safetensors: 0%| | 0.00/439M [00:00<?, ?B/s]"
74
+ ]
75
+ },
76
+ "metadata": {},
77
+ "output_type": "display_data"
78
+ },
79
+ {
80
+ "data": {
81
+ "application/vnd.jupyter.widget-view+json": {
82
+ "model_id": "b4b6412d0cfa49b2a5aa5020246409f8",
83
+ "version_major": 2,
84
+ "version_minor": 0
85
+ },
86
+ "text/plain": [
87
+ "Loading weights: 0%| | 0/201 [00:00<?, ?it/s]"
88
+ ]
89
+ },
90
+ "metadata": {},
91
+ "output_type": "display_data"
92
+ },
93
+ {
94
+ "data": {
95
+ "application/vnd.jupyter.widget-view+json": {
96
+ "model_id": "a7dcfe5b062b43e3a60f4138e63c0da6",
97
+ "version_major": 2,
98
+ "version_minor": 0
99
+ },
100
+ "text/plain": [
101
+ "tokenizer_config.json: 0%| | 0.00/351 [00:00<?, ?B/s]"
102
+ ]
103
+ },
104
+ "metadata": {},
105
+ "output_type": "display_data"
106
+ },
107
+ {
108
+ "data": {
109
+ "application/vnd.jupyter.widget-view+json": {
110
+ "model_id": "ad960d7ceac74783bb5e1a449a6af2a3",
111
+ "version_major": 2,
112
+ "version_minor": 0
113
+ },
114
+ "text/plain": [
115
+ "tokenizer.json: 0.00B [00:00, ?B/s]"
116
+ ]
117
+ },
118
+ "metadata": {},
119
+ "output_type": "display_data"
120
+ }
121
+ ],
122
+ "source": [
123
+ "# Use a pipeline as a high-level helper\n",
124
+ "from transformers import pipeline\n",
125
+ "\n",
126
+ "pipe = pipeline(\"text-classification\", model=\"msperlin/finbert-ai-detector\")"
127
+ ]
128
+ },
129
+ {
130
+ "cell_type": "code",
131
+ "execution_count": 2,
132
+ "metadata": {
133
+ "executionInfo": {
134
+ "elapsed": 3,
135
+ "status": "ok",
136
+ "timestamp": 1774618900269,
137
+ "user": {
138
+ "displayName": "Marcelo Perlin",
139
+ "userId": "18075542091515264462"
140
+ },
141
+ "user_tz": 180
142
+ },
143
+ "id": "m-vN1Z6eXGLN"
144
+ },
145
+ "outputs": [],
146
+ "source": [
147
+ "human_text = \"the last trading day of the immediately preceding calendar quarter is greater than or equal to 130% of the conversion price on each applicable trading day; (2) during the five business day period after any 10 consecutive trading day period (the measurement period) in which the trading price per $1,000 principal amount of notes for each trading day of the measurement period was less than 98% of the product of the last reported sale price of our common stock and the conversion rate on each such trading day; or (3) upon 51 the occurrence of specified corporate events. On or after June 1, 2026 and until the close of business on the business day immediately preceding the maturity date, holders may convert their notes at any time, regardless of the foregoing circumstances. Upon conversion, we will pay or deliver, as the case may be, cash, shares of our common stock or a combination of cash and shares of the our common stock, at our election. During the fourth quarter of 2017, none of the conversion conditions were satisfied and as a result, the 2.125% Notes are not eligible for conversion during the first calendar quarter of 2018.We may not redeem the notes prior to the maturity date, and no sinking fund is provided for the notes.\"\n",
148
+ "\n",
149
+ "ai_text= \"The conditions for conversion are met if: (1) the reported closing price of our common stock on the final trading day of the immediately preceding calendar quarter equals or exceeds 130% of the then-effective conversion price on each relevant trading day; (2) during the five business days immediately following any ten consecutive trading day period (hereinafter, the measurement period) wherein the daily trading price per $1,000 principal amount of notes throughout such measurement period was less than 98% of the product of the last reported sale price of our common stock and the conversion rate applicable on each such trading day; or (3) upon the occurrence of certain specified corporate events. Commencing June 1, 2026, and continuing through the close of business on the business day immediately preceding the maturity date, holders shall be entitled to convert their notes at any time, irrespective of the aforementioned conditions. Upon any such conversion, we retain the sole discretion to satisfy the conversion obligation by delivering cash, shares of our common stock, or a combination thereof. Throughout the fourth fiscal quarter of 2017, none of the requisite conversion conditions were met, thereby rendering the 2.125% Notes ineligible for conversion during the first calendar quarter of 2018. The notes are not subject to redemption by the Company prior to their stated maturity date, nor is any sinking fund provision established for them. The initial conversion rate is stipulated at 125.0031 shares of common stock per $1,000 principal amount of notes, corresponding to an initial conversion price of approximately $8.00 per share of common stock.\"\n",
150
+ "\n"
151
+ ]
152
+ },
153
+ {
154
+ "cell_type": "code",
155
+ "execution_count": 3,
156
+ "metadata": {
157
+ "executionInfo": {
158
+ "elapsed": 14,
159
+ "status": "ok",
160
+ "timestamp": 1774618900287,
161
+ "user": {
162
+ "displayName": "Marcelo Perlin",
163
+ "userId": "18075542091515264462"
164
+ },
165
+ "user_tz": 180
166
+ },
167
+ "id": "a9flBHWxZzCW"
168
+ },
169
+ "outputs": [],
170
+ "source": [
171
+ "import re\n",
172
+ "\n",
173
+ "def clean_financial_text(text):\n",
174
+ " # 1. Standardize whitespace\n",
175
+ " text = re.sub(r'\\\\s+', ' ', text)\n",
176
+ "\n",
177
+ " # 2. Remove typical PDF conversion artifacts (e.g., Page X of Y)\n",
178
+ " text = re.sub(r'Page \\d+ of \\d+', '', text, flags=re.IGNORECASE)\n",
179
+ "\n",
180
+ " # 3. Keep common financial/punctuation non-ASCII, strip the rest\n",
181
+ " # This regex keeps basic ASCII + common currency + accented Latin-1\n",
182
+ " # Adjust if you're specifically looking for smart quotes as AI markers\n",
183
+ " text = \"\".join(i for i in text if ord(i) < 128 or i in \"€£¥©®™áéíóúçÁÉÍÓÚÇ\")\n",
184
+ "\n",
185
+ " # 20260326 dont converto to lower case\n",
186
+ " #text = text.lower()\n",
187
+ "\n",
188
+ " # 4. Strip leading/trailing whitespace\n",
189
+ " text = text.strip()\n",
190
+ "\n",
191
+ " return text"
192
+ ]
193
+ },
194
+ {
195
+ "cell_type": "code",
196
+ "execution_count": 7,
197
+ "metadata": {
198
+ "colab": {
199
+ "base_uri": "https://localhost:8080/"
200
+ },
201
+ "executionInfo": {
202
+ "elapsed": 1909,
203
+ "status": "ok",
204
+ "timestamp": 1774618946943,
205
+ "user": {
206
+ "displayName": "Marcelo Perlin",
207
+ "userId": "18075542091515264462"
208
+ },
209
+ "user_tz": 180
210
+ },
211
+ "id": "3QOYWfy3Xf2y",
212
+ "outputId": "095ccc6b-28c3-4cac-ab05-1b29dd0e92c4"
213
+ },
214
+ "outputs": [
215
+ {
216
+ "name": "stdout",
217
+ "output_type": "stream",
218
+ "text": [
219
+ "Result for human text: [{'label': 'LABEL_0', 'score': 0.8389487266540527}]\n",
220
+ "Result for AI text: [{'label': 'LABEL_1', 'score': 0.9915664792060852}]\n"
221
+ ]
222
+ }
223
+ ],
224
+ "source": [
225
+ "#human_text = clean_financial_text(human_text)\n",
226
+ "#ai_text = clean_financial_text(ai_text)\n",
227
+ "\n",
228
+ "res_human = pipe(human_text)\n",
229
+ "res_ai = pipe(ai_text)\n",
230
+ "\n",
231
+ "# Label 0 is human written, Label 1 is AI written\n",
232
+ "print(f\"Result for human text: {res_human}\")\n",
233
+ "print(f\"Result for AI text: {res_ai}\")"
234
+ ]
235
+ }
236
+ ],
237
+ "metadata": {
238
+ "colab": {
239
+ "authorship_tag": "ABX9TyMlpd3OM9jBfwFJVtp5BDWy",
240
+ "provenance": []
241
+ },
242
+ "kernelspec": {
243
+ "display_name": "Python 3 (ipykernel)",
244
+ "language": "python",
245
+ "name": "python3"
246
+ },
247
+ "language_info": {
248
+ "codemirror_mode": {
249
+ "name": "ipython",
250
+ "version": 3
251
+ },
252
+ "file_extension": ".py",
253
+ "mimetype": "text/x-python",
254
+ "name": "python",
255
+ "nbconvert_exporter": "python",
256
+ "pygments_lexer": "ipython3",
257
+ "version": "3.12.13"
258
+ },
259
+ "widgets": {
260
+ "application/vnd.jupyter.widget-state+json": {
261
+ "0bcf00c2850b4166b19fa2cc67b2c316": {
262
+ "model_module": "@jupyter-widgets/controls",
263
+ "model_module_version": "1.5.0",
264
+ "model_name": "HBoxModel",
265
+ "state": {
266
+ "_dom_classes": [],
267
+ "_model_module": "@jupyter-widgets/controls",
268
+ "_model_module_version": "1.5.0",
269
+ "_model_name": "HBoxModel",
270
+ "_view_count": null,
271
+ "_view_module": "@jupyter-widgets/controls",
272
+ "_view_module_version": "1.5.0",
273
+ "_view_name": "HBoxView",
274
+ "box_style": "",
275
+ "children": [
276
+ "IPY_MODEL_f9fc8866d45d4488849542210285a0f6",
277
+ "IPY_MODEL_ac892e73e2f146eb93ae1501a88bd42a",
278
+ "IPY_MODEL_68f442f24a8d4009a7dc629bd8e523ec"
279
+ ],
280
+ "layout": "IPY_MODEL_b006d255aefa465e9192dcf701587a77"
281
+ }
282
+ },
283
+ "18ddc56f9a3f4ca0bf9f9234ddc1cf43": {
284
+ "model_module": "@jupyter-widgets/base",
285
+ "model_module_version": "1.2.0",
286
+ "model_name": "LayoutModel",
287
+ "state": {
288
+ "_model_module": "@jupyter-widgets/base",
289
+ "_model_module_version": "1.2.0",
290
+ "_model_name": "LayoutModel",
291
+ "_view_count": null,
292
+ "_view_module": "@jupyter-widgets/base",
293
+ "_view_module_version": "1.2.0",
294
+ "_view_name": "LayoutView",
295
+ "align_content": null,
296
+ "align_items": null,
297
+ "align_self": null,
298
+ "border": null,
299
+ "bottom": null,
300
+ "display": null,
301
+ "flex": null,
302
+ "flex_flow": null,
303
+ "grid_area": null,
304
+ "grid_auto_columns": null,
305
+ "grid_auto_flow": null,
306
+ "grid_auto_rows": null,
307
+ "grid_column": null,
308
+ "grid_gap": null,
309
+ "grid_row": null,
310
+ "grid_template_areas": null,
311
+ "grid_template_columns": null,
312
+ "grid_template_rows": null,
313
+ "height": null,
314
+ "justify_content": null,
315
+ "justify_items": null,
316
+ "left": null,
317
+ "margin": null,
318
+ "max_height": null,
319
+ "max_width": null,
320
+ "min_height": null,
321
+ "min_width": null,
322
+ "object_fit": null,
323
+ "object_position": null,
324
+ "order": null,
325
+ "overflow": null,
326
+ "overflow_x": null,
327
+ "overflow_y": null,
328
+ "padding": null,
329
+ "right": null,
330
+ "top": null,
331
+ "visibility": null,
332
+ "width": null
333
+ }
334
+ },
335
+ "57fd3787e2cd49cdbbb85d4fbfa289e4": {
336
+ "model_module": "@jupyter-widgets/base",
337
+ "model_module_version": "1.2.0",
338
+ "model_name": "LayoutModel",
339
+ "state": {
340
+ "_model_module": "@jupyter-widgets/base",
341
+ "_model_module_version": "1.2.0",
342
+ "_model_name": "LayoutModel",
343
+ "_view_count": null,
344
+ "_view_module": "@jupyter-widgets/base",
345
+ "_view_module_version": "1.2.0",
346
+ "_view_name": "LayoutView",
347
+ "align_content": null,
348
+ "align_items": null,
349
+ "align_self": null,
350
+ "border": null,
351
+ "bottom": null,
352
+ "display": null,
353
+ "flex": null,
354
+ "flex_flow": null,
355
+ "grid_area": null,
356
+ "grid_auto_columns": null,
357
+ "grid_auto_flow": null,
358
+ "grid_auto_rows": null,
359
+ "grid_column": null,
360
+ "grid_gap": null,
361
+ "grid_row": null,
362
+ "grid_template_areas": null,
363
+ "grid_template_columns": null,
364
+ "grid_template_rows": null,
365
+ "height": null,
366
+ "justify_content": null,
367
+ "justify_items": null,
368
+ "left": null,
369
+ "margin": null,
370
+ "max_height": null,
371
+ "max_width": null,
372
+ "min_height": null,
373
+ "min_width": null,
374
+ "object_fit": null,
375
+ "object_position": null,
376
+ "order": null,
377
+ "overflow": null,
378
+ "overflow_x": null,
379
+ "overflow_y": null,
380
+ "padding": null,
381
+ "right": null,
382
+ "top": null,
383
+ "visibility": null,
384
+ "width": null
385
+ }
386
+ },
387
+ "67061d2557144f488710cebd793bb96b": {
388
+ "model_module": "@jupyter-widgets/base",
389
+ "model_module_version": "1.2.0",
390
+ "model_name": "LayoutModel",
391
+ "state": {
392
+ "_model_module": "@jupyter-widgets/base",
393
+ "_model_module_version": "1.2.0",
394
+ "_model_name": "LayoutModel",
395
+ "_view_count": null,
396
+ "_view_module": "@jupyter-widgets/base",
397
+ "_view_module_version": "1.2.0",
398
+ "_view_name": "LayoutView",
399
+ "align_content": null,
400
+ "align_items": null,
401
+ "align_self": null,
402
+ "border": null,
403
+ "bottom": null,
404
+ "display": null,
405
+ "flex": null,
406
+ "flex_flow": null,
407
+ "grid_area": null,
408
+ "grid_auto_columns": null,
409
+ "grid_auto_flow": null,
410
+ "grid_auto_rows": null,
411
+ "grid_column": null,
412
+ "grid_gap": null,
413
+ "grid_row": null,
414
+ "grid_template_areas": null,
415
+ "grid_template_columns": null,
416
+ "grid_template_rows": null,
417
+ "height": null,
418
+ "justify_content": null,
419
+ "justify_items": null,
420
+ "left": null,
421
+ "margin": null,
422
+ "max_height": null,
423
+ "max_width": null,
424
+ "min_height": null,
425
+ "min_width": null,
426
+ "object_fit": null,
427
+ "object_position": null,
428
+ "order": null,
429
+ "overflow": null,
430
+ "overflow_x": null,
431
+ "overflow_y": null,
432
+ "padding": null,
433
+ "right": null,
434
+ "top": null,
435
+ "visibility": null,
436
+ "width": null
437
+ }
438
+ },
439
+ "68b3487aabe245c7a868dd04ca88da73": {
440
+ "model_module": "@jupyter-widgets/controls",
441
+ "model_module_version": "1.5.0",
442
+ "model_name": "ProgressStyleModel",
443
+ "state": {
444
+ "_model_module": "@jupyter-widgets/controls",
445
+ "_model_module_version": "1.5.0",
446
+ "_model_name": "ProgressStyleModel",
447
+ "_view_count": null,
448
+ "_view_module": "@jupyter-widgets/base",
449
+ "_view_module_version": "1.2.0",
450
+ "_view_name": "StyleView",
451
+ "bar_color": null,
452
+ "description_width": ""
453
+ }
454
+ },
455
+ "68f442f24a8d4009a7dc629bd8e523ec": {
456
+ "model_module": "@jupyter-widgets/controls",
457
+ "model_module_version": "1.5.0",
458
+ "model_name": "HTMLModel",
459
+ "state": {
460
+ "_dom_classes": [],
461
+ "_model_module": "@jupyter-widgets/controls",
462
+ "_model_module_version": "1.5.0",
463
+ "_model_name": "HTMLModel",
464
+ "_view_count": null,
465
+ "_view_module": "@jupyter-widgets/controls",
466
+ "_view_module_version": "1.5.0",
467
+ "_view_name": "HTMLView",
468
+ "description": "",
469
+ "description_tooltip": null,
470
+ "layout": "IPY_MODEL_67061d2557144f488710cebd793bb96b",
471
+ "placeholder": "​",
472
+ "style": "IPY_MODEL_f3e0fbc3cf534e3ea70089599ccbde10",
473
+ "value": " 201/201 [00:00&lt;00:00, 513.14it/s, Materializing param=classifier.weight]"
474
+ }
475
+ },
476
+ "ac892e73e2f146eb93ae1501a88bd42a": {
477
+ "model_module": "@jupyter-widgets/controls",
478
+ "model_module_version": "1.5.0",
479
+ "model_name": "FloatProgressModel",
480
+ "state": {
481
+ "_dom_classes": [],
482
+ "_model_module": "@jupyter-widgets/controls",
483
+ "_model_module_version": "1.5.0",
484
+ "_model_name": "FloatProgressModel",
485
+ "_view_count": null,
486
+ "_view_module": "@jupyter-widgets/controls",
487
+ "_view_module_version": "1.5.0",
488
+ "_view_name": "ProgressView",
489
+ "bar_style": "success",
490
+ "description": "",
491
+ "description_tooltip": null,
492
+ "layout": "IPY_MODEL_18ddc56f9a3f4ca0bf9f9234ddc1cf43",
493
+ "max": 201,
494
+ "min": 0,
495
+ "orientation": "horizontal",
496
+ "style": "IPY_MODEL_68b3487aabe245c7a868dd04ca88da73",
497
+ "value": 201
498
+ }
499
+ },
500
+ "b006d255aefa465e9192dcf701587a77": {
501
+ "model_module": "@jupyter-widgets/base",
502
+ "model_module_version": "1.2.0",
503
+ "model_name": "LayoutModel",
504
+ "state": {
505
+ "_model_module": "@jupyter-widgets/base",
506
+ "_model_module_version": "1.2.0",
507
+ "_model_name": "LayoutModel",
508
+ "_view_count": null,
509
+ "_view_module": "@jupyter-widgets/base",
510
+ "_view_module_version": "1.2.0",
511
+ "_view_name": "LayoutView",
512
+ "align_content": null,
513
+ "align_items": null,
514
+ "align_self": null,
515
+ "border": null,
516
+ "bottom": null,
517
+ "display": null,
518
+ "flex": null,
519
+ "flex_flow": null,
520
+ "grid_area": null,
521
+ "grid_auto_columns": null,
522
+ "grid_auto_flow": null,
523
+ "grid_auto_rows": null,
524
+ "grid_column": null,
525
+ "grid_gap": null,
526
+ "grid_row": null,
527
+ "grid_template_areas": null,
528
+ "grid_template_columns": null,
529
+ "grid_template_rows": null,
530
+ "height": null,
531
+ "justify_content": null,
532
+ "justify_items": null,
533
+ "left": null,
534
+ "margin": null,
535
+ "max_height": null,
536
+ "max_width": null,
537
+ "min_height": null,
538
+ "min_width": null,
539
+ "object_fit": null,
540
+ "object_position": null,
541
+ "order": null,
542
+ "overflow": null,
543
+ "overflow_x": null,
544
+ "overflow_y": null,
545
+ "padding": null,
546
+ "right": null,
547
+ "top": null,
548
+ "visibility": null,
549
+ "width": null
550
+ }
551
+ },
552
+ "db5a306e5c8042e89d63144789306505": {
553
+ "model_module": "@jupyter-widgets/controls",
554
+ "model_module_version": "1.5.0",
555
+ "model_name": "DescriptionStyleModel",
556
+ "state": {
557
+ "_model_module": "@jupyter-widgets/controls",
558
+ "_model_module_version": "1.5.0",
559
+ "_model_name": "DescriptionStyleModel",
560
+ "_view_count": null,
561
+ "_view_module": "@jupyter-widgets/base",
562
+ "_view_module_version": "1.2.0",
563
+ "_view_name": "StyleView",
564
+ "description_width": ""
565
+ }
566
+ },
567
+ "f3e0fbc3cf534e3ea70089599ccbde10": {
568
+ "model_module": "@jupyter-widgets/controls",
569
+ "model_module_version": "1.5.0",
570
+ "model_name": "DescriptionStyleModel",
571
+ "state": {
572
+ "_model_module": "@jupyter-widgets/controls",
573
+ "_model_module_version": "1.5.0",
574
+ "_model_name": "DescriptionStyleModel",
575
+ "_view_count": null,
576
+ "_view_module": "@jupyter-widgets/base",
577
+ "_view_module_version": "1.2.0",
578
+ "_view_name": "StyleView",
579
+ "description_width": ""
580
+ }
581
+ },
582
+ "f9fc8866d45d4488849542210285a0f6": {
583
+ "model_module": "@jupyter-widgets/controls",
584
+ "model_module_version": "1.5.0",
585
+ "model_name": "HTMLModel",
586
+ "state": {
587
+ "_dom_classes": [],
588
+ "_model_module": "@jupyter-widgets/controls",
589
+ "_model_module_version": "1.5.0",
590
+ "_model_name": "HTMLModel",
591
+ "_view_count": null,
592
+ "_view_module": "@jupyter-widgets/controls",
593
+ "_view_module_version": "1.5.0",
594
+ "_view_name": "HTMLView",
595
+ "description": "",
596
+ "description_tooltip": null,
597
+ "layout": "IPY_MODEL_57fd3787e2cd49cdbbb85d4fbfa289e4",
598
+ "placeholder": "​",
599
+ "style": "IPY_MODEL_db5a306e5c8042e89d63144789306505",
600
+ "value": "Loading weights: 100%"
601
+ }
602
+ }
603
+ }
604
+ }
605
+ },
606
+ "nbformat": 4,
607
+ "nbformat_minor": 0
608
+ }