chriscarrollsmith commited on
Commit
d99b68e
·
verified ·
1 Parent(s): bb17e18

release-v1: LightGBM inference bundle + feature schema

Browse files
README.md ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: en
3
+ tags:
4
+ - twitter
5
+ - engagement-prediction
6
+ - lightgbm
7
+ - tabular
8
+ license: apache-2.0
9
+ library_name: lightgbm
10
+ ---
11
+
12
+ # will-it-bang (release inference checkpoint)
13
+
14
+ Predict a tweet's **exposure-adjusted engagement rate** from post-time text +
15
+ caller-supplied ego/history features. This artifact is the shippable booster +
16
+ transforms for the [will-it-bang](https://github.com/chriscarrollsmith/will-it-bang)
17
+ research stack — **not** a fine-tuned language model.
18
+
19
+ ## Target
20
+
21
+ `log1p(eng / (min(age_days, exposure_cap_days) + exposure_eps) ** exposure_beta)`
22
+
23
+ where `eng = favorite_count + retweet_count` on the target tweet. Retweets
24
+ (`full_text` starting with `RT @`) are excluded from training.
25
+
26
+ ## Metrics (time holdout, release knobs)
27
+
28
+ | Metric | Value |
29
+ |---|---:|
30
+ | within-account Spearman NR (wmean) | 0.24558121396978394 |
31
+ | within-account Spearman reply (wmean) | 0.3066146060439611 |
32
+ | global Spearman NR | 0.6161772679216294 |
33
+ | rate RMSE | 0.5877444773382154 |
34
+ | features | 326 |
35
+
36
+ Release train disables emb-kNN TE, CA provenance features, and domain-mean TE
37
+ maps so serve-time does not need private train residue. `account_mean_rate` remains
38
+ a **caller-supplied float** (recipe below).
39
+
40
+ ## Files
41
+
42
+ | File | Role |
43
+ |---|---|
44
+ | `model_level.txt` | LightGBM level booster |
45
+ | `model_rank_nr.txt` / `model_rank_rp.txt` | Optional hybrid stratum rankers |
46
+ | `emb_pca.joblib` | MiniLM → PCA |
47
+ | `tfidf.joblib` + `text_svd.joblib` | TF-IDF → TruncatedSVD |
48
+ | `res_emb_cav_direction.npy` | Residual CAV direction |
49
+ | `res_emb_baseline_coef.npy` + `res_emb_baselines.json` | OLS residualizer |
50
+ | `feature_schema.json` | Ordered booster inputs + defaults |
51
+ | `constants.json` | Priors / caps / encoder id |
52
+ | `predict.py` | Reference scorer |
53
+
54
+ ## Input schema
55
+
56
+ `account_id` is **not** a model input. Pass a feature row matching
57
+ `feature_schema.json` (or raw `full_text` + Layer-A floats via `predict.py`).
58
+
59
+ ### `account_mean_rate` / `log_account_n`
60
+
61
+ For a candidate at time T, take the author's earlier posts with known engagement,
62
+ each converted to the same exposure-rate `y_i`. Let `n` be that count,
63
+ `y_bar` their mean, `m = 20.0`, and
64
+ `mu = 0.151304` (from `constants.json`):
65
+
66
+ `account_mean_rate = (n * y_bar + m * mu) / (n + m)`
67
+ `log_account_n = log1p(n)`
68
+
69
+ If `n = 0`: `account_mean_rate = mu`, `log_account_n = 0`.
70
+
71
+ ### Ego history
72
+
73
+ Use pre-T reply/quote/mention arrivals and structural flags — **never** dump-time
74
+ favorite/retweet history or current follower snapshots. See repo `AGENTS.md`.
75
+
76
+ ### Text encoder
77
+
78
+ `sentence-transformers/all-MiniLM-L6-v2` (Apache-2.0), 384-d mean pool,
79
+ then bundle residual-CAV → PCA (96 dims) and TF-IDF→SVD
80
+ (128 dims).
81
+
82
+ ## Quick start
83
+
84
+ ```bash
85
+ pip install lightgbm scikit-learn numpy pandas joblib pyarrow sentence-transformers
86
+ python predict.py --bundle . --input row.json
87
+ ```
88
+
89
+ `row.json` may include `full_text` plus any Layer-A fields from `feature_schema.json`.
90
+ Missing fields use schema defaults.
91
+
92
+ ## Not included
93
+
94
+ Training dataset, val predictions, per-account TE maps, emb-kNN train index,
95
+ CA graph caches. Rebuild features yourself from the recipes above.
constants.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "global_mean": 0.15130374839379565,
3
+ "account_te_prior": 20.0,
4
+ "exposure_cap_days": 30.0,
5
+ "exposure_beta": 1.0,
6
+ "exposure_eps": 1.0,
7
+ "encoder_id": "sentence-transformers/all-MiniLM-L6-v2",
8
+ "encoder_dims": 384,
9
+ "emb_pca_dims": 96,
10
+ "text_svd_dims": 128,
11
+ "target": "log1p(eng / (min(age_days, exposure_cap_days) + exposure_eps) ** exposure_beta)",
12
+ "release_knobs": {
13
+ "account_te": true,
14
+ "emb_knn_te": false,
15
+ "domain_mean_te": false,
16
+ "provenance_features": false,
17
+ "residual_emb_cav": true,
18
+ "hybrid_rank": true
19
+ }
20
+ }
emb_pca.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:36ed38d2f2c853a29aa4c65761eac85207b610978c9f412147367083b61d2684
3
+ size 151511
feature_schema.json ADDED
@@ -0,0 +1,2290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "features": [
3
+ {
4
+ "name": "text_len",
5
+ "dtype": "float32",
6
+ "default": 0.0,
7
+ "group": "structure"
8
+ },
9
+ {
10
+ "name": "log_text_len",
11
+ "dtype": "float32",
12
+ "default": 0.0,
13
+ "group": "structure"
14
+ },
15
+ {
16
+ "name": "has_url",
17
+ "dtype": "float32",
18
+ "default": 0.0,
19
+ "group": "structure"
20
+ },
21
+ {
22
+ "name": "n_mentions",
23
+ "dtype": "float32",
24
+ "default": 0.0,
25
+ "group": "structure"
26
+ },
27
+ {
28
+ "name": "n_hashtags",
29
+ "dtype": "float32",
30
+ "default": 0.0,
31
+ "group": "structure"
32
+ },
33
+ {
34
+ "name": "has_question",
35
+ "dtype": "float32",
36
+ "default": 0.0,
37
+ "group": "structure"
38
+ },
39
+ {
40
+ "name": "has_exclaim",
41
+ "dtype": "float32",
42
+ "default": 0.0,
43
+ "group": "structure"
44
+ },
45
+ {
46
+ "name": "n_emoji",
47
+ "dtype": "float32",
48
+ "default": 0.0,
49
+ "group": "structure"
50
+ },
51
+ {
52
+ "name": "starts_mention",
53
+ "dtype": "float32",
54
+ "default": 0.0,
55
+ "group": "structure"
56
+ },
57
+ {
58
+ "name": "caps_ratio",
59
+ "dtype": "float32",
60
+ "default": 0.0,
61
+ "group": "structure"
62
+ },
63
+ {
64
+ "name": "has_media",
65
+ "dtype": "float32",
66
+ "default": 0.0,
67
+ "group": "structure"
68
+ },
69
+ {
70
+ "name": "n_media",
71
+ "dtype": "float32",
72
+ "default": 0.0,
73
+ "group": "structure"
74
+ },
75
+ {
76
+ "name": "has_ca_url",
77
+ "dtype": "float32",
78
+ "default": 0.0,
79
+ "group": "structure"
80
+ },
81
+ {
82
+ "name": "n_ca_urls",
83
+ "dtype": "float32",
84
+ "default": 0.0,
85
+ "group": "structure"
86
+ },
87
+ {
88
+ "name": "is_reply",
89
+ "dtype": "float32",
90
+ "default": 0.0,
91
+ "group": "structure"
92
+ },
93
+ {
94
+ "name": "is_quote",
95
+ "dtype": "float32",
96
+ "default": 0.0,
97
+ "group": "structure"
98
+ },
99
+ {
100
+ "name": "is_self_reply",
101
+ "dtype": "float32",
102
+ "default": 0.0,
103
+ "group": "structure"
104
+ },
105
+ {
106
+ "name": "hour",
107
+ "dtype": "float32",
108
+ "default": 0.0,
109
+ "group": "calendar"
110
+ },
111
+ {
112
+ "name": "dow",
113
+ "dtype": "float32",
114
+ "default": 0.0,
115
+ "group": "calendar"
116
+ },
117
+ {
118
+ "name": "is_weekend",
119
+ "dtype": "float32",
120
+ "default": 0.0,
121
+ "group": "calendar"
122
+ },
123
+ {
124
+ "name": "hour_sin",
125
+ "dtype": "float32",
126
+ "default": 0.0,
127
+ "group": "calendar"
128
+ },
129
+ {
130
+ "name": "hour_cos",
131
+ "dtype": "float32",
132
+ "default": 0.0,
133
+ "group": "calendar"
134
+ },
135
+ {
136
+ "name": "dow_sin",
137
+ "dtype": "float32",
138
+ "default": 0.0,
139
+ "group": "calendar"
140
+ },
141
+ {
142
+ "name": "dow_cos",
143
+ "dtype": "float32",
144
+ "default": 0.0,
145
+ "group": "calendar"
146
+ },
147
+ {
148
+ "name": "hist_n",
149
+ "dtype": "float32",
150
+ "default": 0.0,
151
+ "group": "ego_history"
152
+ },
153
+ {
154
+ "name": "hist_tweets_7d",
155
+ "dtype": "float32",
156
+ "default": 0.0,
157
+ "group": "ego_history"
158
+ },
159
+ {
160
+ "name": "hist_tweets_30d",
161
+ "dtype": "float32",
162
+ "default": 0.0,
163
+ "group": "ego_history"
164
+ },
165
+ {
166
+ "name": "days_since_last",
167
+ "dtype": "float32",
168
+ "default": 0.0,
169
+ "group": "structure"
170
+ },
171
+ {
172
+ "name": "hist_frac_reply",
173
+ "dtype": "float32",
174
+ "default": 0.0,
175
+ "group": "ego_history"
176
+ },
177
+ {
178
+ "name": "hist_frac_url",
179
+ "dtype": "float32",
180
+ "default": 0.0,
181
+ "group": "ego_history"
182
+ },
183
+ {
184
+ "name": "hist_frac_media",
185
+ "dtype": "float32",
186
+ "default": 0.0,
187
+ "group": "ego_history"
188
+ },
189
+ {
190
+ "name": "hist_mean_replies",
191
+ "dtype": "float32",
192
+ "default": 0.0,
193
+ "group": "ego_history"
194
+ },
195
+ {
196
+ "name": "hist_median_replies",
197
+ "dtype": "float32",
198
+ "default": 0.0,
199
+ "group": "ego_history"
200
+ },
201
+ {
202
+ "name": "hist_p90_replies",
203
+ "dtype": "float32",
204
+ "default": 0.0,
205
+ "group": "ego_history"
206
+ },
207
+ {
208
+ "name": "hist_last_replies",
209
+ "dtype": "float32",
210
+ "default": 0.0,
211
+ "group": "ego_history"
212
+ },
213
+ {
214
+ "name": "hist_std_replies",
215
+ "dtype": "float32",
216
+ "default": 0.0,
217
+ "group": "ego_history"
218
+ },
219
+ {
220
+ "name": "hist_mean_replies_7d",
221
+ "dtype": "float32",
222
+ "default": 0.0,
223
+ "group": "ego_history"
224
+ },
225
+ {
226
+ "name": "hist_mean_replies_30d",
227
+ "dtype": "float32",
228
+ "default": 0.0,
229
+ "group": "ego_history"
230
+ },
231
+ {
232
+ "name": "hist_decay_mean_replies",
233
+ "dtype": "float32",
234
+ "default": 0.0,
235
+ "group": "ego_history"
236
+ },
237
+ {
238
+ "name": "hist_mean_replies_nonreply",
239
+ "dtype": "float32",
240
+ "default": 0.0,
241
+ "group": "ego_history"
242
+ },
243
+ {
244
+ "name": "hist_mean_replies_reply",
245
+ "dtype": "float32",
246
+ "default": 0.0,
247
+ "group": "ego_history"
248
+ },
249
+ {
250
+ "name": "reply_x_hist_replies_nr",
251
+ "dtype": "float32",
252
+ "default": 0.0,
253
+ "group": "structure"
254
+ },
255
+ {
256
+ "name": "media_x_hist_replies",
257
+ "dtype": "float32",
258
+ "default": 0.0,
259
+ "group": "structure"
260
+ },
261
+ {
262
+ "name": "hist_dump_n",
263
+ "dtype": "float32",
264
+ "default": 0.0,
265
+ "group": "ego_history"
266
+ },
267
+ {
268
+ "name": "hist_dump_mean_replies",
269
+ "dtype": "float32",
270
+ "default": 0.0,
271
+ "group": "ego_history"
272
+ },
273
+ {
274
+ "name": "hist_dump_decay_replies",
275
+ "dtype": "float32",
276
+ "default": 0.0,
277
+ "group": "ego_history"
278
+ },
279
+ {
280
+ "name": "hist_dump_p90_replies",
281
+ "dtype": "float32",
282
+ "default": 0.0,
283
+ "group": "ego_history"
284
+ },
285
+ {
286
+ "name": "inbound_replies",
287
+ "dtype": "float32",
288
+ "default": 0.0,
289
+ "group": "ego_history"
290
+ },
291
+ {
292
+ "name": "inbound_replies_7d",
293
+ "dtype": "float32",
294
+ "default": 0.0,
295
+ "group": "ego_history"
296
+ },
297
+ {
298
+ "name": "inbound_replies_30d",
299
+ "dtype": "float32",
300
+ "default": 0.0,
301
+ "group": "ego_history"
302
+ },
303
+ {
304
+ "name": "inbound_replies_per_tweet",
305
+ "dtype": "float32",
306
+ "default": 0.0,
307
+ "group": "ego_history"
308
+ },
309
+ {
310
+ "name": "inbound_quotes",
311
+ "dtype": "float32",
312
+ "default": 0.0,
313
+ "group": "ego_history"
314
+ },
315
+ {
316
+ "name": "inbound_quotes_7d",
317
+ "dtype": "float32",
318
+ "default": 0.0,
319
+ "group": "ego_history"
320
+ },
321
+ {
322
+ "name": "inbound_quotes_30d",
323
+ "dtype": "float32",
324
+ "default": 0.0,
325
+ "group": "ego_history"
326
+ },
327
+ {
328
+ "name": "inbound_quotes_per_tweet",
329
+ "dtype": "float32",
330
+ "default": 0.0,
331
+ "group": "ego_history"
332
+ },
333
+ {
334
+ "name": "inbound_mentions",
335
+ "dtype": "float32",
336
+ "default": 0.0,
337
+ "group": "ego_history"
338
+ },
339
+ {
340
+ "name": "inbound_mentions_7d",
341
+ "dtype": "float32",
342
+ "default": 0.0,
343
+ "group": "ego_history"
344
+ },
345
+ {
346
+ "name": "inbound_mentions_30d",
347
+ "dtype": "float32",
348
+ "default": 0.0,
349
+ "group": "ego_history"
350
+ },
351
+ {
352
+ "name": "inbound_mentions_per_tweet",
353
+ "dtype": "float32",
354
+ "default": 0.0,
355
+ "group": "ego_history"
356
+ },
357
+ {
358
+ "name": "media_x_inbound_replies",
359
+ "dtype": "float32",
360
+ "default": 0.0,
361
+ "group": "ego_history"
362
+ },
363
+ {
364
+ "name": "reply_x_inbound_replies",
365
+ "dtype": "float32",
366
+ "default": 0.0,
367
+ "group": "ego_history"
368
+ },
369
+ {
370
+ "name": "media_x_inbound_mentions",
371
+ "dtype": "float32",
372
+ "default": 0.0,
373
+ "group": "ego_history"
374
+ },
375
+ {
376
+ "name": "reply_x_inbound_mentions",
377
+ "dtype": "float32",
378
+ "default": 0.0,
379
+ "group": "ego_history"
380
+ },
381
+ {
382
+ "name": "has_reply_parent",
383
+ "dtype": "float32",
384
+ "default": 0.0,
385
+ "group": "parent_context"
386
+ },
387
+ {
388
+ "name": "reply_parent_emb_cos",
389
+ "dtype": "float32",
390
+ "default": 0.0,
391
+ "group": "parent_context"
392
+ },
393
+ {
394
+ "name": "reply_parent_log_text_len",
395
+ "dtype": "float32",
396
+ "default": 0.0,
397
+ "group": "parent_context"
398
+ },
399
+ {
400
+ "name": "reply_parent_is_reply",
401
+ "dtype": "float32",
402
+ "default": 0.0,
403
+ "group": "parent_context"
404
+ },
405
+ {
406
+ "name": "reply_parent_is_quote",
407
+ "dtype": "float32",
408
+ "default": 0.0,
409
+ "group": "parent_context"
410
+ },
411
+ {
412
+ "name": "reply_parent_same_author",
413
+ "dtype": "float32",
414
+ "default": 0.0,
415
+ "group": "parent_context"
416
+ },
417
+ {
418
+ "name": "reply_parent_age_hours",
419
+ "dtype": "float32",
420
+ "default": 0.0,
421
+ "group": "parent_context"
422
+ },
423
+ {
424
+ "name": "reply_parent_replies",
425
+ "dtype": "float32",
426
+ "default": 0.0,
427
+ "group": "parent_context"
428
+ },
429
+ {
430
+ "name": "has_quote_parent",
431
+ "dtype": "float32",
432
+ "default": 0.0,
433
+ "group": "parent_context"
434
+ },
435
+ {
436
+ "name": "quote_parent_emb_cos",
437
+ "dtype": "float32",
438
+ "default": 0.0,
439
+ "group": "parent_context"
440
+ },
441
+ {
442
+ "name": "quote_parent_log_text_len",
443
+ "dtype": "float32",
444
+ "default": 0.0,
445
+ "group": "parent_context"
446
+ },
447
+ {
448
+ "name": "quote_parent_is_reply",
449
+ "dtype": "float32",
450
+ "default": 0.0,
451
+ "group": "parent_context"
452
+ },
453
+ {
454
+ "name": "quote_parent_is_quote",
455
+ "dtype": "float32",
456
+ "default": 0.0,
457
+ "group": "parent_context"
458
+ },
459
+ {
460
+ "name": "quote_parent_same_author",
461
+ "dtype": "float32",
462
+ "default": 0.0,
463
+ "group": "parent_context"
464
+ },
465
+ {
466
+ "name": "quote_parent_age_hours",
467
+ "dtype": "float32",
468
+ "default": 0.0,
469
+ "group": "parent_context"
470
+ },
471
+ {
472
+ "name": "quote_parent_replies",
473
+ "dtype": "float32",
474
+ "default": 0.0,
475
+ "group": "parent_context"
476
+ },
477
+ {
478
+ "name": "year",
479
+ "dtype": "float32",
480
+ "default": 0.0,
481
+ "group": "calendar"
482
+ },
483
+ {
484
+ "name": "month_sin",
485
+ "dtype": "float32",
486
+ "default": 0.0,
487
+ "group": "calendar"
488
+ },
489
+ {
490
+ "name": "month_cos",
491
+ "dtype": "float32",
492
+ "default": 0.0,
493
+ "group": "calendar"
494
+ },
495
+ {
496
+ "name": "platform_era",
497
+ "dtype": "float32",
498
+ "default": 0.0,
499
+ "group": "calendar"
500
+ },
501
+ {
502
+ "name": "era_pre_timeline",
503
+ "dtype": "float32",
504
+ "default": 0.0,
505
+ "group": "calendar"
506
+ },
507
+ {
508
+ "name": "era_algo_timeline",
509
+ "dtype": "float32",
510
+ "default": 0.0,
511
+ "group": "calendar"
512
+ },
513
+ {
514
+ "name": "era_pre_musk",
515
+ "dtype": "float32",
516
+ "default": 0.0,
517
+ "group": "calendar"
518
+ },
519
+ {
520
+ "name": "era_musk_early",
521
+ "dtype": "float32",
522
+ "default": 0.0,
523
+ "group": "calendar"
524
+ },
525
+ {
526
+ "name": "era_musk_late",
527
+ "dtype": "float32",
528
+ "default": 0.0,
529
+ "group": "calendar"
530
+ },
531
+ {
532
+ "name": "n_text_urls",
533
+ "dtype": "float32",
534
+ "default": 0.0,
535
+ "group": "url_structure"
536
+ },
537
+ {
538
+ "name": "url_only",
539
+ "dtype": "float32",
540
+ "default": 0.0,
541
+ "group": "url_structure"
542
+ },
543
+ {
544
+ "name": "url_at_end",
545
+ "dtype": "float32",
546
+ "default": 0.0,
547
+ "group": "url_structure"
548
+ },
549
+ {
550
+ "name": "has_expanded_domain",
551
+ "dtype": "float32",
552
+ "default": 0.0,
553
+ "group": "url_structure"
554
+ },
555
+ {
556
+ "name": "n_ca_url_rows",
557
+ "dtype": "float32",
558
+ "default": 0.0,
559
+ "group": "url_structure"
560
+ },
561
+ {
562
+ "name": "domain_is_twitter",
563
+ "dtype": "float32",
564
+ "default": 0.0,
565
+ "group": "url_structure"
566
+ },
567
+ {
568
+ "name": "domain_is_youtube",
569
+ "dtype": "float32",
570
+ "default": 0.0,
571
+ "group": "url_structure"
572
+ },
573
+ {
574
+ "name": "domain_is_github",
575
+ "dtype": "float32",
576
+ "default": 0.0,
577
+ "group": "url_structure"
578
+ },
579
+ {
580
+ "name": "domain_is_substack",
581
+ "dtype": "float32",
582
+ "default": 0.0,
583
+ "group": "url_structure"
584
+ },
585
+ {
586
+ "name": "domain_is_wiki",
587
+ "dtype": "float32",
588
+ "default": 0.0,
589
+ "group": "url_structure"
590
+ },
591
+ {
592
+ "name": "account_mean_rate",
593
+ "dtype": "float32",
594
+ "default": 0.15130374839379565,
595
+ "group": "account_prior"
596
+ },
597
+ {
598
+ "name": "log_account_n",
599
+ "dtype": "float32",
600
+ "default": 0.0,
601
+ "group": "account_prior"
602
+ },
603
+ {
604
+ "name": "res_emb_cav_proj",
605
+ "dtype": "float32",
606
+ "default": 0.0,
607
+ "group": "residual_cav"
608
+ },
609
+ {
610
+ "name": "res_emb_cav_proj_sq",
611
+ "dtype": "float32",
612
+ "default": 0.0,
613
+ "group": "residual_cav"
614
+ },
615
+ {
616
+ "name": "emb_0",
617
+ "dtype": "float32",
618
+ "default": 0.0,
619
+ "group": "embedding_pca"
620
+ },
621
+ {
622
+ "name": "emb_1",
623
+ "dtype": "float32",
624
+ "default": 0.0,
625
+ "group": "embedding_pca"
626
+ },
627
+ {
628
+ "name": "emb_2",
629
+ "dtype": "float32",
630
+ "default": 0.0,
631
+ "group": "embedding_pca"
632
+ },
633
+ {
634
+ "name": "emb_3",
635
+ "dtype": "float32",
636
+ "default": 0.0,
637
+ "group": "embedding_pca"
638
+ },
639
+ {
640
+ "name": "emb_4",
641
+ "dtype": "float32",
642
+ "default": 0.0,
643
+ "group": "embedding_pca"
644
+ },
645
+ {
646
+ "name": "emb_5",
647
+ "dtype": "float32",
648
+ "default": 0.0,
649
+ "group": "embedding_pca"
650
+ },
651
+ {
652
+ "name": "emb_6",
653
+ "dtype": "float32",
654
+ "default": 0.0,
655
+ "group": "embedding_pca"
656
+ },
657
+ {
658
+ "name": "emb_7",
659
+ "dtype": "float32",
660
+ "default": 0.0,
661
+ "group": "embedding_pca"
662
+ },
663
+ {
664
+ "name": "emb_8",
665
+ "dtype": "float32",
666
+ "default": 0.0,
667
+ "group": "embedding_pca"
668
+ },
669
+ {
670
+ "name": "emb_9",
671
+ "dtype": "float32",
672
+ "default": 0.0,
673
+ "group": "embedding_pca"
674
+ },
675
+ {
676
+ "name": "emb_10",
677
+ "dtype": "float32",
678
+ "default": 0.0,
679
+ "group": "embedding_pca"
680
+ },
681
+ {
682
+ "name": "emb_11",
683
+ "dtype": "float32",
684
+ "default": 0.0,
685
+ "group": "embedding_pca"
686
+ },
687
+ {
688
+ "name": "emb_12",
689
+ "dtype": "float32",
690
+ "default": 0.0,
691
+ "group": "embedding_pca"
692
+ },
693
+ {
694
+ "name": "emb_13",
695
+ "dtype": "float32",
696
+ "default": 0.0,
697
+ "group": "embedding_pca"
698
+ },
699
+ {
700
+ "name": "emb_14",
701
+ "dtype": "float32",
702
+ "default": 0.0,
703
+ "group": "embedding_pca"
704
+ },
705
+ {
706
+ "name": "emb_15",
707
+ "dtype": "float32",
708
+ "default": 0.0,
709
+ "group": "embedding_pca"
710
+ },
711
+ {
712
+ "name": "emb_16",
713
+ "dtype": "float32",
714
+ "default": 0.0,
715
+ "group": "embedding_pca"
716
+ },
717
+ {
718
+ "name": "emb_17",
719
+ "dtype": "float32",
720
+ "default": 0.0,
721
+ "group": "embedding_pca"
722
+ },
723
+ {
724
+ "name": "emb_18",
725
+ "dtype": "float32",
726
+ "default": 0.0,
727
+ "group": "embedding_pca"
728
+ },
729
+ {
730
+ "name": "emb_19",
731
+ "dtype": "float32",
732
+ "default": 0.0,
733
+ "group": "embedding_pca"
734
+ },
735
+ {
736
+ "name": "emb_20",
737
+ "dtype": "float32",
738
+ "default": 0.0,
739
+ "group": "embedding_pca"
740
+ },
741
+ {
742
+ "name": "emb_21",
743
+ "dtype": "float32",
744
+ "default": 0.0,
745
+ "group": "embedding_pca"
746
+ },
747
+ {
748
+ "name": "emb_22",
749
+ "dtype": "float32",
750
+ "default": 0.0,
751
+ "group": "embedding_pca"
752
+ },
753
+ {
754
+ "name": "emb_23",
755
+ "dtype": "float32",
756
+ "default": 0.0,
757
+ "group": "embedding_pca"
758
+ },
759
+ {
760
+ "name": "emb_24",
761
+ "dtype": "float32",
762
+ "default": 0.0,
763
+ "group": "embedding_pca"
764
+ },
765
+ {
766
+ "name": "emb_25",
767
+ "dtype": "float32",
768
+ "default": 0.0,
769
+ "group": "embedding_pca"
770
+ },
771
+ {
772
+ "name": "emb_26",
773
+ "dtype": "float32",
774
+ "default": 0.0,
775
+ "group": "embedding_pca"
776
+ },
777
+ {
778
+ "name": "emb_27",
779
+ "dtype": "float32",
780
+ "default": 0.0,
781
+ "group": "embedding_pca"
782
+ },
783
+ {
784
+ "name": "emb_28",
785
+ "dtype": "float32",
786
+ "default": 0.0,
787
+ "group": "embedding_pca"
788
+ },
789
+ {
790
+ "name": "emb_29",
791
+ "dtype": "float32",
792
+ "default": 0.0,
793
+ "group": "embedding_pca"
794
+ },
795
+ {
796
+ "name": "emb_30",
797
+ "dtype": "float32",
798
+ "default": 0.0,
799
+ "group": "embedding_pca"
800
+ },
801
+ {
802
+ "name": "emb_31",
803
+ "dtype": "float32",
804
+ "default": 0.0,
805
+ "group": "embedding_pca"
806
+ },
807
+ {
808
+ "name": "emb_32",
809
+ "dtype": "float32",
810
+ "default": 0.0,
811
+ "group": "embedding_pca"
812
+ },
813
+ {
814
+ "name": "emb_33",
815
+ "dtype": "float32",
816
+ "default": 0.0,
817
+ "group": "embedding_pca"
818
+ },
819
+ {
820
+ "name": "emb_34",
821
+ "dtype": "float32",
822
+ "default": 0.0,
823
+ "group": "embedding_pca"
824
+ },
825
+ {
826
+ "name": "emb_35",
827
+ "dtype": "float32",
828
+ "default": 0.0,
829
+ "group": "embedding_pca"
830
+ },
831
+ {
832
+ "name": "emb_36",
833
+ "dtype": "float32",
834
+ "default": 0.0,
835
+ "group": "embedding_pca"
836
+ },
837
+ {
838
+ "name": "emb_37",
839
+ "dtype": "float32",
840
+ "default": 0.0,
841
+ "group": "embedding_pca"
842
+ },
843
+ {
844
+ "name": "emb_38",
845
+ "dtype": "float32",
846
+ "default": 0.0,
847
+ "group": "embedding_pca"
848
+ },
849
+ {
850
+ "name": "emb_39",
851
+ "dtype": "float32",
852
+ "default": 0.0,
853
+ "group": "embedding_pca"
854
+ },
855
+ {
856
+ "name": "emb_40",
857
+ "dtype": "float32",
858
+ "default": 0.0,
859
+ "group": "embedding_pca"
860
+ },
861
+ {
862
+ "name": "emb_41",
863
+ "dtype": "float32",
864
+ "default": 0.0,
865
+ "group": "embedding_pca"
866
+ },
867
+ {
868
+ "name": "emb_42",
869
+ "dtype": "float32",
870
+ "default": 0.0,
871
+ "group": "embedding_pca"
872
+ },
873
+ {
874
+ "name": "emb_43",
875
+ "dtype": "float32",
876
+ "default": 0.0,
877
+ "group": "embedding_pca"
878
+ },
879
+ {
880
+ "name": "emb_44",
881
+ "dtype": "float32",
882
+ "default": 0.0,
883
+ "group": "embedding_pca"
884
+ },
885
+ {
886
+ "name": "emb_45",
887
+ "dtype": "float32",
888
+ "default": 0.0,
889
+ "group": "embedding_pca"
890
+ },
891
+ {
892
+ "name": "emb_46",
893
+ "dtype": "float32",
894
+ "default": 0.0,
895
+ "group": "embedding_pca"
896
+ },
897
+ {
898
+ "name": "emb_47",
899
+ "dtype": "float32",
900
+ "default": 0.0,
901
+ "group": "embedding_pca"
902
+ },
903
+ {
904
+ "name": "emb_48",
905
+ "dtype": "float32",
906
+ "default": 0.0,
907
+ "group": "embedding_pca"
908
+ },
909
+ {
910
+ "name": "emb_49",
911
+ "dtype": "float32",
912
+ "default": 0.0,
913
+ "group": "embedding_pca"
914
+ },
915
+ {
916
+ "name": "emb_50",
917
+ "dtype": "float32",
918
+ "default": 0.0,
919
+ "group": "embedding_pca"
920
+ },
921
+ {
922
+ "name": "emb_51",
923
+ "dtype": "float32",
924
+ "default": 0.0,
925
+ "group": "embedding_pca"
926
+ },
927
+ {
928
+ "name": "emb_52",
929
+ "dtype": "float32",
930
+ "default": 0.0,
931
+ "group": "embedding_pca"
932
+ },
933
+ {
934
+ "name": "emb_53",
935
+ "dtype": "float32",
936
+ "default": 0.0,
937
+ "group": "embedding_pca"
938
+ },
939
+ {
940
+ "name": "emb_54",
941
+ "dtype": "float32",
942
+ "default": 0.0,
943
+ "group": "embedding_pca"
944
+ },
945
+ {
946
+ "name": "emb_55",
947
+ "dtype": "float32",
948
+ "default": 0.0,
949
+ "group": "embedding_pca"
950
+ },
951
+ {
952
+ "name": "emb_56",
953
+ "dtype": "float32",
954
+ "default": 0.0,
955
+ "group": "embedding_pca"
956
+ },
957
+ {
958
+ "name": "emb_57",
959
+ "dtype": "float32",
960
+ "default": 0.0,
961
+ "group": "embedding_pca"
962
+ },
963
+ {
964
+ "name": "emb_58",
965
+ "dtype": "float32",
966
+ "default": 0.0,
967
+ "group": "embedding_pca"
968
+ },
969
+ {
970
+ "name": "emb_59",
971
+ "dtype": "float32",
972
+ "default": 0.0,
973
+ "group": "embedding_pca"
974
+ },
975
+ {
976
+ "name": "emb_60",
977
+ "dtype": "float32",
978
+ "default": 0.0,
979
+ "group": "embedding_pca"
980
+ },
981
+ {
982
+ "name": "emb_61",
983
+ "dtype": "float32",
984
+ "default": 0.0,
985
+ "group": "embedding_pca"
986
+ },
987
+ {
988
+ "name": "emb_62",
989
+ "dtype": "float32",
990
+ "default": 0.0,
991
+ "group": "embedding_pca"
992
+ },
993
+ {
994
+ "name": "emb_63",
995
+ "dtype": "float32",
996
+ "default": 0.0,
997
+ "group": "embedding_pca"
998
+ },
999
+ {
1000
+ "name": "emb_64",
1001
+ "dtype": "float32",
1002
+ "default": 0.0,
1003
+ "group": "embedding_pca"
1004
+ },
1005
+ {
1006
+ "name": "emb_65",
1007
+ "dtype": "float32",
1008
+ "default": 0.0,
1009
+ "group": "embedding_pca"
1010
+ },
1011
+ {
1012
+ "name": "emb_66",
1013
+ "dtype": "float32",
1014
+ "default": 0.0,
1015
+ "group": "embedding_pca"
1016
+ },
1017
+ {
1018
+ "name": "emb_67",
1019
+ "dtype": "float32",
1020
+ "default": 0.0,
1021
+ "group": "embedding_pca"
1022
+ },
1023
+ {
1024
+ "name": "emb_68",
1025
+ "dtype": "float32",
1026
+ "default": 0.0,
1027
+ "group": "embedding_pca"
1028
+ },
1029
+ {
1030
+ "name": "emb_69",
1031
+ "dtype": "float32",
1032
+ "default": 0.0,
1033
+ "group": "embedding_pca"
1034
+ },
1035
+ {
1036
+ "name": "emb_70",
1037
+ "dtype": "float32",
1038
+ "default": 0.0,
1039
+ "group": "embedding_pca"
1040
+ },
1041
+ {
1042
+ "name": "emb_71",
1043
+ "dtype": "float32",
1044
+ "default": 0.0,
1045
+ "group": "embedding_pca"
1046
+ },
1047
+ {
1048
+ "name": "emb_72",
1049
+ "dtype": "float32",
1050
+ "default": 0.0,
1051
+ "group": "embedding_pca"
1052
+ },
1053
+ {
1054
+ "name": "emb_73",
1055
+ "dtype": "float32",
1056
+ "default": 0.0,
1057
+ "group": "embedding_pca"
1058
+ },
1059
+ {
1060
+ "name": "emb_74",
1061
+ "dtype": "float32",
1062
+ "default": 0.0,
1063
+ "group": "embedding_pca"
1064
+ },
1065
+ {
1066
+ "name": "emb_75",
1067
+ "dtype": "float32",
1068
+ "default": 0.0,
1069
+ "group": "embedding_pca"
1070
+ },
1071
+ {
1072
+ "name": "emb_76",
1073
+ "dtype": "float32",
1074
+ "default": 0.0,
1075
+ "group": "embedding_pca"
1076
+ },
1077
+ {
1078
+ "name": "emb_77",
1079
+ "dtype": "float32",
1080
+ "default": 0.0,
1081
+ "group": "embedding_pca"
1082
+ },
1083
+ {
1084
+ "name": "emb_78",
1085
+ "dtype": "float32",
1086
+ "default": 0.0,
1087
+ "group": "embedding_pca"
1088
+ },
1089
+ {
1090
+ "name": "emb_79",
1091
+ "dtype": "float32",
1092
+ "default": 0.0,
1093
+ "group": "embedding_pca"
1094
+ },
1095
+ {
1096
+ "name": "emb_80",
1097
+ "dtype": "float32",
1098
+ "default": 0.0,
1099
+ "group": "embedding_pca"
1100
+ },
1101
+ {
1102
+ "name": "emb_81",
1103
+ "dtype": "float32",
1104
+ "default": 0.0,
1105
+ "group": "embedding_pca"
1106
+ },
1107
+ {
1108
+ "name": "emb_82",
1109
+ "dtype": "float32",
1110
+ "default": 0.0,
1111
+ "group": "embedding_pca"
1112
+ },
1113
+ {
1114
+ "name": "emb_83",
1115
+ "dtype": "float32",
1116
+ "default": 0.0,
1117
+ "group": "embedding_pca"
1118
+ },
1119
+ {
1120
+ "name": "emb_84",
1121
+ "dtype": "float32",
1122
+ "default": 0.0,
1123
+ "group": "embedding_pca"
1124
+ },
1125
+ {
1126
+ "name": "emb_85",
1127
+ "dtype": "float32",
1128
+ "default": 0.0,
1129
+ "group": "embedding_pca"
1130
+ },
1131
+ {
1132
+ "name": "emb_86",
1133
+ "dtype": "float32",
1134
+ "default": 0.0,
1135
+ "group": "embedding_pca"
1136
+ },
1137
+ {
1138
+ "name": "emb_87",
1139
+ "dtype": "float32",
1140
+ "default": 0.0,
1141
+ "group": "embedding_pca"
1142
+ },
1143
+ {
1144
+ "name": "emb_88",
1145
+ "dtype": "float32",
1146
+ "default": 0.0,
1147
+ "group": "embedding_pca"
1148
+ },
1149
+ {
1150
+ "name": "emb_89",
1151
+ "dtype": "float32",
1152
+ "default": 0.0,
1153
+ "group": "embedding_pca"
1154
+ },
1155
+ {
1156
+ "name": "emb_90",
1157
+ "dtype": "float32",
1158
+ "default": 0.0,
1159
+ "group": "embedding_pca"
1160
+ },
1161
+ {
1162
+ "name": "emb_91",
1163
+ "dtype": "float32",
1164
+ "default": 0.0,
1165
+ "group": "embedding_pca"
1166
+ },
1167
+ {
1168
+ "name": "emb_92",
1169
+ "dtype": "float32",
1170
+ "default": 0.0,
1171
+ "group": "embedding_pca"
1172
+ },
1173
+ {
1174
+ "name": "emb_93",
1175
+ "dtype": "float32",
1176
+ "default": 0.0,
1177
+ "group": "embedding_pca"
1178
+ },
1179
+ {
1180
+ "name": "emb_94",
1181
+ "dtype": "float32",
1182
+ "default": 0.0,
1183
+ "group": "embedding_pca"
1184
+ },
1185
+ {
1186
+ "name": "emb_95",
1187
+ "dtype": "float32",
1188
+ "default": 0.0,
1189
+ "group": "embedding_pca"
1190
+ },
1191
+ {
1192
+ "name": "tfidf_0",
1193
+ "dtype": "float32",
1194
+ "default": 0.0,
1195
+ "group": "text_svd"
1196
+ },
1197
+ {
1198
+ "name": "tfidf_1",
1199
+ "dtype": "float32",
1200
+ "default": 0.0,
1201
+ "group": "text_svd"
1202
+ },
1203
+ {
1204
+ "name": "tfidf_2",
1205
+ "dtype": "float32",
1206
+ "default": 0.0,
1207
+ "group": "text_svd"
1208
+ },
1209
+ {
1210
+ "name": "tfidf_3",
1211
+ "dtype": "float32",
1212
+ "default": 0.0,
1213
+ "group": "text_svd"
1214
+ },
1215
+ {
1216
+ "name": "tfidf_4",
1217
+ "dtype": "float32",
1218
+ "default": 0.0,
1219
+ "group": "text_svd"
1220
+ },
1221
+ {
1222
+ "name": "tfidf_5",
1223
+ "dtype": "float32",
1224
+ "default": 0.0,
1225
+ "group": "text_svd"
1226
+ },
1227
+ {
1228
+ "name": "tfidf_6",
1229
+ "dtype": "float32",
1230
+ "default": 0.0,
1231
+ "group": "text_svd"
1232
+ },
1233
+ {
1234
+ "name": "tfidf_7",
1235
+ "dtype": "float32",
1236
+ "default": 0.0,
1237
+ "group": "text_svd"
1238
+ },
1239
+ {
1240
+ "name": "tfidf_8",
1241
+ "dtype": "float32",
1242
+ "default": 0.0,
1243
+ "group": "text_svd"
1244
+ },
1245
+ {
1246
+ "name": "tfidf_9",
1247
+ "dtype": "float32",
1248
+ "default": 0.0,
1249
+ "group": "text_svd"
1250
+ },
1251
+ {
1252
+ "name": "tfidf_10",
1253
+ "dtype": "float32",
1254
+ "default": 0.0,
1255
+ "group": "text_svd"
1256
+ },
1257
+ {
1258
+ "name": "tfidf_11",
1259
+ "dtype": "float32",
1260
+ "default": 0.0,
1261
+ "group": "text_svd"
1262
+ },
1263
+ {
1264
+ "name": "tfidf_12",
1265
+ "dtype": "float32",
1266
+ "default": 0.0,
1267
+ "group": "text_svd"
1268
+ },
1269
+ {
1270
+ "name": "tfidf_13",
1271
+ "dtype": "float32",
1272
+ "default": 0.0,
1273
+ "group": "text_svd"
1274
+ },
1275
+ {
1276
+ "name": "tfidf_14",
1277
+ "dtype": "float32",
1278
+ "default": 0.0,
1279
+ "group": "text_svd"
1280
+ },
1281
+ {
1282
+ "name": "tfidf_15",
1283
+ "dtype": "float32",
1284
+ "default": 0.0,
1285
+ "group": "text_svd"
1286
+ },
1287
+ {
1288
+ "name": "tfidf_16",
1289
+ "dtype": "float32",
1290
+ "default": 0.0,
1291
+ "group": "text_svd"
1292
+ },
1293
+ {
1294
+ "name": "tfidf_17",
1295
+ "dtype": "float32",
1296
+ "default": 0.0,
1297
+ "group": "text_svd"
1298
+ },
1299
+ {
1300
+ "name": "tfidf_18",
1301
+ "dtype": "float32",
1302
+ "default": 0.0,
1303
+ "group": "text_svd"
1304
+ },
1305
+ {
1306
+ "name": "tfidf_19",
1307
+ "dtype": "float32",
1308
+ "default": 0.0,
1309
+ "group": "text_svd"
1310
+ },
1311
+ {
1312
+ "name": "tfidf_20",
1313
+ "dtype": "float32",
1314
+ "default": 0.0,
1315
+ "group": "text_svd"
1316
+ },
1317
+ {
1318
+ "name": "tfidf_21",
1319
+ "dtype": "float32",
1320
+ "default": 0.0,
1321
+ "group": "text_svd"
1322
+ },
1323
+ {
1324
+ "name": "tfidf_22",
1325
+ "dtype": "float32",
1326
+ "default": 0.0,
1327
+ "group": "text_svd"
1328
+ },
1329
+ {
1330
+ "name": "tfidf_23",
1331
+ "dtype": "float32",
1332
+ "default": 0.0,
1333
+ "group": "text_svd"
1334
+ },
1335
+ {
1336
+ "name": "tfidf_24",
1337
+ "dtype": "float32",
1338
+ "default": 0.0,
1339
+ "group": "text_svd"
1340
+ },
1341
+ {
1342
+ "name": "tfidf_25",
1343
+ "dtype": "float32",
1344
+ "default": 0.0,
1345
+ "group": "text_svd"
1346
+ },
1347
+ {
1348
+ "name": "tfidf_26",
1349
+ "dtype": "float32",
1350
+ "default": 0.0,
1351
+ "group": "text_svd"
1352
+ },
1353
+ {
1354
+ "name": "tfidf_27",
1355
+ "dtype": "float32",
1356
+ "default": 0.0,
1357
+ "group": "text_svd"
1358
+ },
1359
+ {
1360
+ "name": "tfidf_28",
1361
+ "dtype": "float32",
1362
+ "default": 0.0,
1363
+ "group": "text_svd"
1364
+ },
1365
+ {
1366
+ "name": "tfidf_29",
1367
+ "dtype": "float32",
1368
+ "default": 0.0,
1369
+ "group": "text_svd"
1370
+ },
1371
+ {
1372
+ "name": "tfidf_30",
1373
+ "dtype": "float32",
1374
+ "default": 0.0,
1375
+ "group": "text_svd"
1376
+ },
1377
+ {
1378
+ "name": "tfidf_31",
1379
+ "dtype": "float32",
1380
+ "default": 0.0,
1381
+ "group": "text_svd"
1382
+ },
1383
+ {
1384
+ "name": "tfidf_32",
1385
+ "dtype": "float32",
1386
+ "default": 0.0,
1387
+ "group": "text_svd"
1388
+ },
1389
+ {
1390
+ "name": "tfidf_33",
1391
+ "dtype": "float32",
1392
+ "default": 0.0,
1393
+ "group": "text_svd"
1394
+ },
1395
+ {
1396
+ "name": "tfidf_34",
1397
+ "dtype": "float32",
1398
+ "default": 0.0,
1399
+ "group": "text_svd"
1400
+ },
1401
+ {
1402
+ "name": "tfidf_35",
1403
+ "dtype": "float32",
1404
+ "default": 0.0,
1405
+ "group": "text_svd"
1406
+ },
1407
+ {
1408
+ "name": "tfidf_36",
1409
+ "dtype": "float32",
1410
+ "default": 0.0,
1411
+ "group": "text_svd"
1412
+ },
1413
+ {
1414
+ "name": "tfidf_37",
1415
+ "dtype": "float32",
1416
+ "default": 0.0,
1417
+ "group": "text_svd"
1418
+ },
1419
+ {
1420
+ "name": "tfidf_38",
1421
+ "dtype": "float32",
1422
+ "default": 0.0,
1423
+ "group": "text_svd"
1424
+ },
1425
+ {
1426
+ "name": "tfidf_39",
1427
+ "dtype": "float32",
1428
+ "default": 0.0,
1429
+ "group": "text_svd"
1430
+ },
1431
+ {
1432
+ "name": "tfidf_40",
1433
+ "dtype": "float32",
1434
+ "default": 0.0,
1435
+ "group": "text_svd"
1436
+ },
1437
+ {
1438
+ "name": "tfidf_41",
1439
+ "dtype": "float32",
1440
+ "default": 0.0,
1441
+ "group": "text_svd"
1442
+ },
1443
+ {
1444
+ "name": "tfidf_42",
1445
+ "dtype": "float32",
1446
+ "default": 0.0,
1447
+ "group": "text_svd"
1448
+ },
1449
+ {
1450
+ "name": "tfidf_43",
1451
+ "dtype": "float32",
1452
+ "default": 0.0,
1453
+ "group": "text_svd"
1454
+ },
1455
+ {
1456
+ "name": "tfidf_44",
1457
+ "dtype": "float32",
1458
+ "default": 0.0,
1459
+ "group": "text_svd"
1460
+ },
1461
+ {
1462
+ "name": "tfidf_45",
1463
+ "dtype": "float32",
1464
+ "default": 0.0,
1465
+ "group": "text_svd"
1466
+ },
1467
+ {
1468
+ "name": "tfidf_46",
1469
+ "dtype": "float32",
1470
+ "default": 0.0,
1471
+ "group": "text_svd"
1472
+ },
1473
+ {
1474
+ "name": "tfidf_47",
1475
+ "dtype": "float32",
1476
+ "default": 0.0,
1477
+ "group": "text_svd"
1478
+ },
1479
+ {
1480
+ "name": "tfidf_48",
1481
+ "dtype": "float32",
1482
+ "default": 0.0,
1483
+ "group": "text_svd"
1484
+ },
1485
+ {
1486
+ "name": "tfidf_49",
1487
+ "dtype": "float32",
1488
+ "default": 0.0,
1489
+ "group": "text_svd"
1490
+ },
1491
+ {
1492
+ "name": "tfidf_50",
1493
+ "dtype": "float32",
1494
+ "default": 0.0,
1495
+ "group": "text_svd"
1496
+ },
1497
+ {
1498
+ "name": "tfidf_51",
1499
+ "dtype": "float32",
1500
+ "default": 0.0,
1501
+ "group": "text_svd"
1502
+ },
1503
+ {
1504
+ "name": "tfidf_52",
1505
+ "dtype": "float32",
1506
+ "default": 0.0,
1507
+ "group": "text_svd"
1508
+ },
1509
+ {
1510
+ "name": "tfidf_53",
1511
+ "dtype": "float32",
1512
+ "default": 0.0,
1513
+ "group": "text_svd"
1514
+ },
1515
+ {
1516
+ "name": "tfidf_54",
1517
+ "dtype": "float32",
1518
+ "default": 0.0,
1519
+ "group": "text_svd"
1520
+ },
1521
+ {
1522
+ "name": "tfidf_55",
1523
+ "dtype": "float32",
1524
+ "default": 0.0,
1525
+ "group": "text_svd"
1526
+ },
1527
+ {
1528
+ "name": "tfidf_56",
1529
+ "dtype": "float32",
1530
+ "default": 0.0,
1531
+ "group": "text_svd"
1532
+ },
1533
+ {
1534
+ "name": "tfidf_57",
1535
+ "dtype": "float32",
1536
+ "default": 0.0,
1537
+ "group": "text_svd"
1538
+ },
1539
+ {
1540
+ "name": "tfidf_58",
1541
+ "dtype": "float32",
1542
+ "default": 0.0,
1543
+ "group": "text_svd"
1544
+ },
1545
+ {
1546
+ "name": "tfidf_59",
1547
+ "dtype": "float32",
1548
+ "default": 0.0,
1549
+ "group": "text_svd"
1550
+ },
1551
+ {
1552
+ "name": "tfidf_60",
1553
+ "dtype": "float32",
1554
+ "default": 0.0,
1555
+ "group": "text_svd"
1556
+ },
1557
+ {
1558
+ "name": "tfidf_61",
1559
+ "dtype": "float32",
1560
+ "default": 0.0,
1561
+ "group": "text_svd"
1562
+ },
1563
+ {
1564
+ "name": "tfidf_62",
1565
+ "dtype": "float32",
1566
+ "default": 0.0,
1567
+ "group": "text_svd"
1568
+ },
1569
+ {
1570
+ "name": "tfidf_63",
1571
+ "dtype": "float32",
1572
+ "default": 0.0,
1573
+ "group": "text_svd"
1574
+ },
1575
+ {
1576
+ "name": "tfidf_64",
1577
+ "dtype": "float32",
1578
+ "default": 0.0,
1579
+ "group": "text_svd"
1580
+ },
1581
+ {
1582
+ "name": "tfidf_65",
1583
+ "dtype": "float32",
1584
+ "default": 0.0,
1585
+ "group": "text_svd"
1586
+ },
1587
+ {
1588
+ "name": "tfidf_66",
1589
+ "dtype": "float32",
1590
+ "default": 0.0,
1591
+ "group": "text_svd"
1592
+ },
1593
+ {
1594
+ "name": "tfidf_67",
1595
+ "dtype": "float32",
1596
+ "default": 0.0,
1597
+ "group": "text_svd"
1598
+ },
1599
+ {
1600
+ "name": "tfidf_68",
1601
+ "dtype": "float32",
1602
+ "default": 0.0,
1603
+ "group": "text_svd"
1604
+ },
1605
+ {
1606
+ "name": "tfidf_69",
1607
+ "dtype": "float32",
1608
+ "default": 0.0,
1609
+ "group": "text_svd"
1610
+ },
1611
+ {
1612
+ "name": "tfidf_70",
1613
+ "dtype": "float32",
1614
+ "default": 0.0,
1615
+ "group": "text_svd"
1616
+ },
1617
+ {
1618
+ "name": "tfidf_71",
1619
+ "dtype": "float32",
1620
+ "default": 0.0,
1621
+ "group": "text_svd"
1622
+ },
1623
+ {
1624
+ "name": "tfidf_72",
1625
+ "dtype": "float32",
1626
+ "default": 0.0,
1627
+ "group": "text_svd"
1628
+ },
1629
+ {
1630
+ "name": "tfidf_73",
1631
+ "dtype": "float32",
1632
+ "default": 0.0,
1633
+ "group": "text_svd"
1634
+ },
1635
+ {
1636
+ "name": "tfidf_74",
1637
+ "dtype": "float32",
1638
+ "default": 0.0,
1639
+ "group": "text_svd"
1640
+ },
1641
+ {
1642
+ "name": "tfidf_75",
1643
+ "dtype": "float32",
1644
+ "default": 0.0,
1645
+ "group": "text_svd"
1646
+ },
1647
+ {
1648
+ "name": "tfidf_76",
1649
+ "dtype": "float32",
1650
+ "default": 0.0,
1651
+ "group": "text_svd"
1652
+ },
1653
+ {
1654
+ "name": "tfidf_77",
1655
+ "dtype": "float32",
1656
+ "default": 0.0,
1657
+ "group": "text_svd"
1658
+ },
1659
+ {
1660
+ "name": "tfidf_78",
1661
+ "dtype": "float32",
1662
+ "default": 0.0,
1663
+ "group": "text_svd"
1664
+ },
1665
+ {
1666
+ "name": "tfidf_79",
1667
+ "dtype": "float32",
1668
+ "default": 0.0,
1669
+ "group": "text_svd"
1670
+ },
1671
+ {
1672
+ "name": "tfidf_80",
1673
+ "dtype": "float32",
1674
+ "default": 0.0,
1675
+ "group": "text_svd"
1676
+ },
1677
+ {
1678
+ "name": "tfidf_81",
1679
+ "dtype": "float32",
1680
+ "default": 0.0,
1681
+ "group": "text_svd"
1682
+ },
1683
+ {
1684
+ "name": "tfidf_82",
1685
+ "dtype": "float32",
1686
+ "default": 0.0,
1687
+ "group": "text_svd"
1688
+ },
1689
+ {
1690
+ "name": "tfidf_83",
1691
+ "dtype": "float32",
1692
+ "default": 0.0,
1693
+ "group": "text_svd"
1694
+ },
1695
+ {
1696
+ "name": "tfidf_84",
1697
+ "dtype": "float32",
1698
+ "default": 0.0,
1699
+ "group": "text_svd"
1700
+ },
1701
+ {
1702
+ "name": "tfidf_85",
1703
+ "dtype": "float32",
1704
+ "default": 0.0,
1705
+ "group": "text_svd"
1706
+ },
1707
+ {
1708
+ "name": "tfidf_86",
1709
+ "dtype": "float32",
1710
+ "default": 0.0,
1711
+ "group": "text_svd"
1712
+ },
1713
+ {
1714
+ "name": "tfidf_87",
1715
+ "dtype": "float32",
1716
+ "default": 0.0,
1717
+ "group": "text_svd"
1718
+ },
1719
+ {
1720
+ "name": "tfidf_88",
1721
+ "dtype": "float32",
1722
+ "default": 0.0,
1723
+ "group": "text_svd"
1724
+ },
1725
+ {
1726
+ "name": "tfidf_89",
1727
+ "dtype": "float32",
1728
+ "default": 0.0,
1729
+ "group": "text_svd"
1730
+ },
1731
+ {
1732
+ "name": "tfidf_90",
1733
+ "dtype": "float32",
1734
+ "default": 0.0,
1735
+ "group": "text_svd"
1736
+ },
1737
+ {
1738
+ "name": "tfidf_91",
1739
+ "dtype": "float32",
1740
+ "default": 0.0,
1741
+ "group": "text_svd"
1742
+ },
1743
+ {
1744
+ "name": "tfidf_92",
1745
+ "dtype": "float32",
1746
+ "default": 0.0,
1747
+ "group": "text_svd"
1748
+ },
1749
+ {
1750
+ "name": "tfidf_93",
1751
+ "dtype": "float32",
1752
+ "default": 0.0,
1753
+ "group": "text_svd"
1754
+ },
1755
+ {
1756
+ "name": "tfidf_94",
1757
+ "dtype": "float32",
1758
+ "default": 0.0,
1759
+ "group": "text_svd"
1760
+ },
1761
+ {
1762
+ "name": "tfidf_95",
1763
+ "dtype": "float32",
1764
+ "default": 0.0,
1765
+ "group": "text_svd"
1766
+ },
1767
+ {
1768
+ "name": "tfidf_96",
1769
+ "dtype": "float32",
1770
+ "default": 0.0,
1771
+ "group": "text_svd"
1772
+ },
1773
+ {
1774
+ "name": "tfidf_97",
1775
+ "dtype": "float32",
1776
+ "default": 0.0,
1777
+ "group": "text_svd"
1778
+ },
1779
+ {
1780
+ "name": "tfidf_98",
1781
+ "dtype": "float32",
1782
+ "default": 0.0,
1783
+ "group": "text_svd"
1784
+ },
1785
+ {
1786
+ "name": "tfidf_99",
1787
+ "dtype": "float32",
1788
+ "default": 0.0,
1789
+ "group": "text_svd"
1790
+ },
1791
+ {
1792
+ "name": "tfidf_100",
1793
+ "dtype": "float32",
1794
+ "default": 0.0,
1795
+ "group": "text_svd"
1796
+ },
1797
+ {
1798
+ "name": "tfidf_101",
1799
+ "dtype": "float32",
1800
+ "default": 0.0,
1801
+ "group": "text_svd"
1802
+ },
1803
+ {
1804
+ "name": "tfidf_102",
1805
+ "dtype": "float32",
1806
+ "default": 0.0,
1807
+ "group": "text_svd"
1808
+ },
1809
+ {
1810
+ "name": "tfidf_103",
1811
+ "dtype": "float32",
1812
+ "default": 0.0,
1813
+ "group": "text_svd"
1814
+ },
1815
+ {
1816
+ "name": "tfidf_104",
1817
+ "dtype": "float32",
1818
+ "default": 0.0,
1819
+ "group": "text_svd"
1820
+ },
1821
+ {
1822
+ "name": "tfidf_105",
1823
+ "dtype": "float32",
1824
+ "default": 0.0,
1825
+ "group": "text_svd"
1826
+ },
1827
+ {
1828
+ "name": "tfidf_106",
1829
+ "dtype": "float32",
1830
+ "default": 0.0,
1831
+ "group": "text_svd"
1832
+ },
1833
+ {
1834
+ "name": "tfidf_107",
1835
+ "dtype": "float32",
1836
+ "default": 0.0,
1837
+ "group": "text_svd"
1838
+ },
1839
+ {
1840
+ "name": "tfidf_108",
1841
+ "dtype": "float32",
1842
+ "default": 0.0,
1843
+ "group": "text_svd"
1844
+ },
1845
+ {
1846
+ "name": "tfidf_109",
1847
+ "dtype": "float32",
1848
+ "default": 0.0,
1849
+ "group": "text_svd"
1850
+ },
1851
+ {
1852
+ "name": "tfidf_110",
1853
+ "dtype": "float32",
1854
+ "default": 0.0,
1855
+ "group": "text_svd"
1856
+ },
1857
+ {
1858
+ "name": "tfidf_111",
1859
+ "dtype": "float32",
1860
+ "default": 0.0,
1861
+ "group": "text_svd"
1862
+ },
1863
+ {
1864
+ "name": "tfidf_112",
1865
+ "dtype": "float32",
1866
+ "default": 0.0,
1867
+ "group": "text_svd"
1868
+ },
1869
+ {
1870
+ "name": "tfidf_113",
1871
+ "dtype": "float32",
1872
+ "default": 0.0,
1873
+ "group": "text_svd"
1874
+ },
1875
+ {
1876
+ "name": "tfidf_114",
1877
+ "dtype": "float32",
1878
+ "default": 0.0,
1879
+ "group": "text_svd"
1880
+ },
1881
+ {
1882
+ "name": "tfidf_115",
1883
+ "dtype": "float32",
1884
+ "default": 0.0,
1885
+ "group": "text_svd"
1886
+ },
1887
+ {
1888
+ "name": "tfidf_116",
1889
+ "dtype": "float32",
1890
+ "default": 0.0,
1891
+ "group": "text_svd"
1892
+ },
1893
+ {
1894
+ "name": "tfidf_117",
1895
+ "dtype": "float32",
1896
+ "default": 0.0,
1897
+ "group": "text_svd"
1898
+ },
1899
+ {
1900
+ "name": "tfidf_118",
1901
+ "dtype": "float32",
1902
+ "default": 0.0,
1903
+ "group": "text_svd"
1904
+ },
1905
+ {
1906
+ "name": "tfidf_119",
1907
+ "dtype": "float32",
1908
+ "default": 0.0,
1909
+ "group": "text_svd"
1910
+ },
1911
+ {
1912
+ "name": "tfidf_120",
1913
+ "dtype": "float32",
1914
+ "default": 0.0,
1915
+ "group": "text_svd"
1916
+ },
1917
+ {
1918
+ "name": "tfidf_121",
1919
+ "dtype": "float32",
1920
+ "default": 0.0,
1921
+ "group": "text_svd"
1922
+ },
1923
+ {
1924
+ "name": "tfidf_122",
1925
+ "dtype": "float32",
1926
+ "default": 0.0,
1927
+ "group": "text_svd"
1928
+ },
1929
+ {
1930
+ "name": "tfidf_123",
1931
+ "dtype": "float32",
1932
+ "default": 0.0,
1933
+ "group": "text_svd"
1934
+ },
1935
+ {
1936
+ "name": "tfidf_124",
1937
+ "dtype": "float32",
1938
+ "default": 0.0,
1939
+ "group": "text_svd"
1940
+ },
1941
+ {
1942
+ "name": "tfidf_125",
1943
+ "dtype": "float32",
1944
+ "default": 0.0,
1945
+ "group": "text_svd"
1946
+ },
1947
+ {
1948
+ "name": "tfidf_126",
1949
+ "dtype": "float32",
1950
+ "default": 0.0,
1951
+ "group": "text_svd"
1952
+ },
1953
+ {
1954
+ "name": "tfidf_127",
1955
+ "dtype": "float32",
1956
+ "default": 0.0,
1957
+ "group": "text_svd"
1958
+ }
1959
+ ],
1960
+ "feature_names": [
1961
+ "text_len",
1962
+ "log_text_len",
1963
+ "has_url",
1964
+ "n_mentions",
1965
+ "n_hashtags",
1966
+ "has_question",
1967
+ "has_exclaim",
1968
+ "n_emoji",
1969
+ "starts_mention",
1970
+ "caps_ratio",
1971
+ "has_media",
1972
+ "n_media",
1973
+ "has_ca_url",
1974
+ "n_ca_urls",
1975
+ "is_reply",
1976
+ "is_quote",
1977
+ "is_self_reply",
1978
+ "hour",
1979
+ "dow",
1980
+ "is_weekend",
1981
+ "hour_sin",
1982
+ "hour_cos",
1983
+ "dow_sin",
1984
+ "dow_cos",
1985
+ "hist_n",
1986
+ "hist_tweets_7d",
1987
+ "hist_tweets_30d",
1988
+ "days_since_last",
1989
+ "hist_frac_reply",
1990
+ "hist_frac_url",
1991
+ "hist_frac_media",
1992
+ "hist_mean_replies",
1993
+ "hist_median_replies",
1994
+ "hist_p90_replies",
1995
+ "hist_last_replies",
1996
+ "hist_std_replies",
1997
+ "hist_mean_replies_7d",
1998
+ "hist_mean_replies_30d",
1999
+ "hist_decay_mean_replies",
2000
+ "hist_mean_replies_nonreply",
2001
+ "hist_mean_replies_reply",
2002
+ "reply_x_hist_replies_nr",
2003
+ "media_x_hist_replies",
2004
+ "hist_dump_n",
2005
+ "hist_dump_mean_replies",
2006
+ "hist_dump_decay_replies",
2007
+ "hist_dump_p90_replies",
2008
+ "inbound_replies",
2009
+ "inbound_replies_7d",
2010
+ "inbound_replies_30d",
2011
+ "inbound_replies_per_tweet",
2012
+ "inbound_quotes",
2013
+ "inbound_quotes_7d",
2014
+ "inbound_quotes_30d",
2015
+ "inbound_quotes_per_tweet",
2016
+ "inbound_mentions",
2017
+ "inbound_mentions_7d",
2018
+ "inbound_mentions_30d",
2019
+ "inbound_mentions_per_tweet",
2020
+ "media_x_inbound_replies",
2021
+ "reply_x_inbound_replies",
2022
+ "media_x_inbound_mentions",
2023
+ "reply_x_inbound_mentions",
2024
+ "has_reply_parent",
2025
+ "reply_parent_emb_cos",
2026
+ "reply_parent_log_text_len",
2027
+ "reply_parent_is_reply",
2028
+ "reply_parent_is_quote",
2029
+ "reply_parent_same_author",
2030
+ "reply_parent_age_hours",
2031
+ "reply_parent_replies",
2032
+ "has_quote_parent",
2033
+ "quote_parent_emb_cos",
2034
+ "quote_parent_log_text_len",
2035
+ "quote_parent_is_reply",
2036
+ "quote_parent_is_quote",
2037
+ "quote_parent_same_author",
2038
+ "quote_parent_age_hours",
2039
+ "quote_parent_replies",
2040
+ "year",
2041
+ "month_sin",
2042
+ "month_cos",
2043
+ "platform_era",
2044
+ "era_pre_timeline",
2045
+ "era_algo_timeline",
2046
+ "era_pre_musk",
2047
+ "era_musk_early",
2048
+ "era_musk_late",
2049
+ "n_text_urls",
2050
+ "url_only",
2051
+ "url_at_end",
2052
+ "has_expanded_domain",
2053
+ "n_ca_url_rows",
2054
+ "domain_is_twitter",
2055
+ "domain_is_youtube",
2056
+ "domain_is_github",
2057
+ "domain_is_substack",
2058
+ "domain_is_wiki",
2059
+ "account_mean_rate",
2060
+ "log_account_n",
2061
+ "res_emb_cav_proj",
2062
+ "res_emb_cav_proj_sq",
2063
+ "emb_0",
2064
+ "emb_1",
2065
+ "emb_2",
2066
+ "emb_3",
2067
+ "emb_4",
2068
+ "emb_5",
2069
+ "emb_6",
2070
+ "emb_7",
2071
+ "emb_8",
2072
+ "emb_9",
2073
+ "emb_10",
2074
+ "emb_11",
2075
+ "emb_12",
2076
+ "emb_13",
2077
+ "emb_14",
2078
+ "emb_15",
2079
+ "emb_16",
2080
+ "emb_17",
2081
+ "emb_18",
2082
+ "emb_19",
2083
+ "emb_20",
2084
+ "emb_21",
2085
+ "emb_22",
2086
+ "emb_23",
2087
+ "emb_24",
2088
+ "emb_25",
2089
+ "emb_26",
2090
+ "emb_27",
2091
+ "emb_28",
2092
+ "emb_29",
2093
+ "emb_30",
2094
+ "emb_31",
2095
+ "emb_32",
2096
+ "emb_33",
2097
+ "emb_34",
2098
+ "emb_35",
2099
+ "emb_36",
2100
+ "emb_37",
2101
+ "emb_38",
2102
+ "emb_39",
2103
+ "emb_40",
2104
+ "emb_41",
2105
+ "emb_42",
2106
+ "emb_43",
2107
+ "emb_44",
2108
+ "emb_45",
2109
+ "emb_46",
2110
+ "emb_47",
2111
+ "emb_48",
2112
+ "emb_49",
2113
+ "emb_50",
2114
+ "emb_51",
2115
+ "emb_52",
2116
+ "emb_53",
2117
+ "emb_54",
2118
+ "emb_55",
2119
+ "emb_56",
2120
+ "emb_57",
2121
+ "emb_58",
2122
+ "emb_59",
2123
+ "emb_60",
2124
+ "emb_61",
2125
+ "emb_62",
2126
+ "emb_63",
2127
+ "emb_64",
2128
+ "emb_65",
2129
+ "emb_66",
2130
+ "emb_67",
2131
+ "emb_68",
2132
+ "emb_69",
2133
+ "emb_70",
2134
+ "emb_71",
2135
+ "emb_72",
2136
+ "emb_73",
2137
+ "emb_74",
2138
+ "emb_75",
2139
+ "emb_76",
2140
+ "emb_77",
2141
+ "emb_78",
2142
+ "emb_79",
2143
+ "emb_80",
2144
+ "emb_81",
2145
+ "emb_82",
2146
+ "emb_83",
2147
+ "emb_84",
2148
+ "emb_85",
2149
+ "emb_86",
2150
+ "emb_87",
2151
+ "emb_88",
2152
+ "emb_89",
2153
+ "emb_90",
2154
+ "emb_91",
2155
+ "emb_92",
2156
+ "emb_93",
2157
+ "emb_94",
2158
+ "emb_95",
2159
+ "tfidf_0",
2160
+ "tfidf_1",
2161
+ "tfidf_2",
2162
+ "tfidf_3",
2163
+ "tfidf_4",
2164
+ "tfidf_5",
2165
+ "tfidf_6",
2166
+ "tfidf_7",
2167
+ "tfidf_8",
2168
+ "tfidf_9",
2169
+ "tfidf_10",
2170
+ "tfidf_11",
2171
+ "tfidf_12",
2172
+ "tfidf_13",
2173
+ "tfidf_14",
2174
+ "tfidf_15",
2175
+ "tfidf_16",
2176
+ "tfidf_17",
2177
+ "tfidf_18",
2178
+ "tfidf_19",
2179
+ "tfidf_20",
2180
+ "tfidf_21",
2181
+ "tfidf_22",
2182
+ "tfidf_23",
2183
+ "tfidf_24",
2184
+ "tfidf_25",
2185
+ "tfidf_26",
2186
+ "tfidf_27",
2187
+ "tfidf_28",
2188
+ "tfidf_29",
2189
+ "tfidf_30",
2190
+ "tfidf_31",
2191
+ "tfidf_32",
2192
+ "tfidf_33",
2193
+ "tfidf_34",
2194
+ "tfidf_35",
2195
+ "tfidf_36",
2196
+ "tfidf_37",
2197
+ "tfidf_38",
2198
+ "tfidf_39",
2199
+ "tfidf_40",
2200
+ "tfidf_41",
2201
+ "tfidf_42",
2202
+ "tfidf_43",
2203
+ "tfidf_44",
2204
+ "tfidf_45",
2205
+ "tfidf_46",
2206
+ "tfidf_47",
2207
+ "tfidf_48",
2208
+ "tfidf_49",
2209
+ "tfidf_50",
2210
+ "tfidf_51",
2211
+ "tfidf_52",
2212
+ "tfidf_53",
2213
+ "tfidf_54",
2214
+ "tfidf_55",
2215
+ "tfidf_56",
2216
+ "tfidf_57",
2217
+ "tfidf_58",
2218
+ "tfidf_59",
2219
+ "tfidf_60",
2220
+ "tfidf_61",
2221
+ "tfidf_62",
2222
+ "tfidf_63",
2223
+ "tfidf_64",
2224
+ "tfidf_65",
2225
+ "tfidf_66",
2226
+ "tfidf_67",
2227
+ "tfidf_68",
2228
+ "tfidf_69",
2229
+ "tfidf_70",
2230
+ "tfidf_71",
2231
+ "tfidf_72",
2232
+ "tfidf_73",
2233
+ "tfidf_74",
2234
+ "tfidf_75",
2235
+ "tfidf_76",
2236
+ "tfidf_77",
2237
+ "tfidf_78",
2238
+ "tfidf_79",
2239
+ "tfidf_80",
2240
+ "tfidf_81",
2241
+ "tfidf_82",
2242
+ "tfidf_83",
2243
+ "tfidf_84",
2244
+ "tfidf_85",
2245
+ "tfidf_86",
2246
+ "tfidf_87",
2247
+ "tfidf_88",
2248
+ "tfidf_89",
2249
+ "tfidf_90",
2250
+ "tfidf_91",
2251
+ "tfidf_92",
2252
+ "tfidf_93",
2253
+ "tfidf_94",
2254
+ "tfidf_95",
2255
+ "tfidf_96",
2256
+ "tfidf_97",
2257
+ "tfidf_98",
2258
+ "tfidf_99",
2259
+ "tfidf_100",
2260
+ "tfidf_101",
2261
+ "tfidf_102",
2262
+ "tfidf_103",
2263
+ "tfidf_104",
2264
+ "tfidf_105",
2265
+ "tfidf_106",
2266
+ "tfidf_107",
2267
+ "tfidf_108",
2268
+ "tfidf_109",
2269
+ "tfidf_110",
2270
+ "tfidf_111",
2271
+ "tfidf_112",
2272
+ "tfidf_113",
2273
+ "tfidf_114",
2274
+ "tfidf_115",
2275
+ "tfidf_116",
2276
+ "tfidf_117",
2277
+ "tfidf_118",
2278
+ "tfidf_119",
2279
+ "tfidf_120",
2280
+ "tfidf_121",
2281
+ "tfidf_122",
2282
+ "tfidf_123",
2283
+ "tfidf_124",
2284
+ "tfidf_125",
2285
+ "tfidf_126",
2286
+ "tfidf_127"
2287
+ ],
2288
+ "n_features": 326,
2289
+ "notes": "Pass Layer-A floats (ego history, structure, calendar, account_mean_rate). Bundle applies residual CAV, emb PCA, and TF-IDF\u2192SVD. account_id is not a model input."
2290
+ }
metrics.json ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "rmse_log": 0.5877444773382154,
3
+ "mae_log": 0.2987727442764338,
4
+ "r2_log": 0.2190175711388792,
5
+ "spearman": 0.552975328379164,
6
+ "mae_engagement": 2.89875987639266,
7
+ "rmse_log_nonreply": 0.8638332178373588,
8
+ "rmse_log_reply": 0.3993264164625104,
9
+ "spearman_nonreply": 0.6161772679216294,
10
+ "spearman_reply": 0.4087985225427317,
11
+ "spearman_within_account_nonreply_mean": 0.2210206367964205,
12
+ "spearman_within_account_nonreply_wmean": 0.24558121396978394,
13
+ "spearman_within_account_nonreply_n": 415.0,
14
+ "spearman_within_account_reply_mean": 0.27944139633265186,
15
+ "spearman_within_account_reply_wmean": 0.3066146060439611,
16
+ "spearman_within_account_reply_n": 267.0,
17
+ "rmse_log_nonreply_top10": 2.3478436463235663,
18
+ "mean_underpred_nonreply_top10": 2.068597104093038,
19
+ "rmse_log_raw_dump": 1.0221516651925613,
20
+ "spearman_raw_dump": 0.448903523930651,
21
+ "exposure_correct": true,
22
+ "exposure_mode": "rate",
23
+ "exposure_cap_days": 30.0,
24
+ "exposure_beta": 1.0,
25
+ "exposure_a": 0.0,
26
+ "exposure_b": 0.0,
27
+ "target_space": "exposure_rate",
28
+ "best_iteration": 140,
29
+ "num_features": 326,
30
+ "train_rows": 88500,
31
+ "val_rows": 22125,
32
+ "n_accounts_train": 868,
33
+ "n_accounts_val": 594,
34
+ "baseline_rmse_log": 0.7146245709321322,
35
+ "reply_baseline_rmse_log": 0.7106109199414513,
36
+ "chosen_baseline_rmse_log": 0.6952656498247348,
37
+ "residual": false,
38
+ "baseline_kind": "context_replies",
39
+ "nonreply_weight": 1.0,
40
+ "breakout_head": false,
41
+ "breakout_auc": NaN,
42
+ "model": "lgbm",
43
+ "account_te": true,
44
+ "era_te": 0.0,
45
+ "era_te_prior": 0.0,
46
+ "era_heads": 0.0,
47
+ "era_key": "",
48
+ "era_head_min_train": 0.0,
49
+ "loss": "asymmetric",
50
+ "sera_floor": 0.0,
51
+ "sera_high_only": 0.0,
52
+ "sera_nonreply_only": 0.0,
53
+ "early_stop_metric": "rmse",
54
+ "hybrid_rank": 1.0,
55
+ "rank_nonreply_only": 1.0,
56
+ "rank_min_group": 2.0,
57
+ "rank_relevance": "dense",
58
+ "holdout_policy": "time",
59
+ "min_upload_hist": 0.0,
60
+ "provenance_features": 0.0,
61
+ "stream_fresh_days": 0.0,
62
+ "media_types": 0.0,
63
+ "nr_train_rank_n_rows": 14637.0,
64
+ "nr_train_rank_n_groups": 706.0,
65
+ "nr_train_rank_min_group": 2.0,
66
+ "nr_train_rank_mean_group": 20.73229461756374,
67
+ "nr_train_rank_frac_rows_kept": 0.9942263279445728,
68
+ "nr_train_rank_label_max": 174.0,
69
+ "nr_train_rank_relevance_extreme": 0.0,
70
+ "nr_train_rank_frac_grade4": 0.0,
71
+ "nr_val_rank_n_rows": 6891.0,
72
+ "nr_val_rank_n_groups": 420.0,
73
+ "nr_val_rank_min_group": 2.0,
74
+ "nr_val_rank_mean_group": 16.40714285714286,
75
+ "nr_val_rank_frac_rows_kept": 0.9826037359190075,
76
+ "nr_val_rank_label_max": 127.0,
77
+ "nr_val_rank_relevance_extreme": 0.0,
78
+ "nr_val_rank_frac_grade4": 0.0,
79
+ "reply_train_rank_n_rows": 73776.0,
80
+ "reply_train_rank_n_groups": 865.0,
81
+ "reply_train_rank_min_group": 2.0,
82
+ "reply_train_rank_mean_group": 85.29017341040462,
83
+ "reply_train_rank_frac_rows_kept": 0.9999728916479167,
84
+ "reply_train_rank_label_max": 174.0,
85
+ "reply_train_rank_relevance_extreme": 0.0,
86
+ "reply_train_rank_frac_grade4": 0.0,
87
+ "reply_val_rank_n_rows": 14994.0,
88
+ "reply_val_rank_n_groups": 268.0,
89
+ "reply_val_rank_min_group": 2.0,
90
+ "reply_val_rank_mean_group": 55.94776119402985,
91
+ "reply_val_rank_frac_rows_kept": 0.9921916357861302,
92
+ "reply_val_rank_label_max": 170.0,
93
+ "reply_val_rank_relevance_extreme": 0.0,
94
+ "reply_val_rank_frac_grade4": 0.0,
95
+ "seconds": 26.48
96
+ }
model_level.txt ADDED
The diff for this file is too large to render. See raw diff
 
model_rank_nr.txt ADDED
The diff for this file is too large to render. See raw diff
 
model_rank_rp.txt ADDED
The diff for this file is too large to render. See raw diff
 
predict.py ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Reference scorer for a will-it-bang release inference bundle.
2
+
3
+ Usage:
4
+ uv run predict.py --bundle ~/.cache/will-it-bang/release-v1 --input row.json
5
+ uv run predict.py --bundle DIR --input rows.jsonl
6
+
7
+ Input JSON object(s) may include `full_text` plus any Layer-A fields from
8
+ `feature_schema.json`. Missing fields use schema defaults. MiniLM is computed
9
+ from `full_text` when raw `emb_0..383` are absent.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import argparse
15
+ import json
16
+ import re
17
+ from pathlib import Path
18
+ from typing import Any
19
+
20
+ import joblib
21
+ import lightgbm as lgb
22
+ import numpy as np
23
+ import pandas as pd
24
+
25
+
26
+ def _load_json_rows(path: Path) -> list[dict[str, Any]]:
27
+ text = path.read_text()
28
+ if path.suffix == ".jsonl":
29
+ return [json.loads(line) for line in text.splitlines() if line.strip()]
30
+ payload = json.loads(text)
31
+ if isinstance(payload, list):
32
+ return payload
33
+ if isinstance(payload, dict):
34
+ return [payload]
35
+ raise SystemExit(f"Unsupported JSON in {path}")
36
+
37
+
38
+ def _minilm_embed(texts: list[str], encoder_id: str) -> np.ndarray:
39
+ from sentence_transformers import SentenceTransformer
40
+
41
+ model = SentenceTransformer(encoder_id)
42
+ emb = model.encode(texts, show_progress_bar=False, normalize_embeddings=False)
43
+ return np.asarray(emb, dtype=np.float64)
44
+
45
+
46
+ def _raw_emb_matrix(rows: list[dict[str, Any]], n_dim: int) -> np.ndarray | None:
47
+ cols = [f"emb_{i}" for i in range(n_dim)]
48
+ if not all(c in rows[0] for c in cols):
49
+ return None
50
+ return np.asarray([[float(r.get(c, 0.0)) for c in cols] for r in rows], dtype=np.float64)
51
+
52
+
53
+ def build_feature_matrix(
54
+ rows: list[dict[str, Any]],
55
+ *,
56
+ bundle: Path,
57
+ ) -> tuple[np.ndarray, list[str]]:
58
+ schema = json.loads((bundle / "feature_schema.json").read_text())
59
+ constants = json.loads((bundle / "constants.json").read_text())
60
+ feature_names: list[str] = list(schema["feature_names"])
61
+ defaults = {f["name"]: float(f["default"]) for f in schema["features"]}
62
+
63
+ pca = joblib.load(bundle / "emb_pca.joblib")
64
+ tfidf = joblib.load(bundle / "tfidf.joblib")
65
+ svd = joblib.load(bundle / "text_svd.joblib")
66
+ direction = np.load(bundle / "res_emb_cav_direction.npy")
67
+ coef = np.load(bundle / "res_emb_baseline_coef.npy")
68
+ baselines = json.loads((bundle / "res_emb_baselines.json").read_text())
69
+ baseline_names: list[str] = list(baselines["names"])
70
+
71
+ n_raw = int(constants["encoder_dims"])
72
+ emb = _raw_emb_matrix(rows, n_raw)
73
+ if emb is None:
74
+ texts = [str(r.get("full_text", "")) for r in rows]
75
+ if not any(texts):
76
+ raise SystemExit("Need full_text or emb_0..emb_{n-1} on each row")
77
+ emb = _minilm_embed(texts, constants["encoder_id"])
78
+ if emb.shape[1] != n_raw:
79
+ raise SystemExit(f"Encoder dim {emb.shape[1]} != {n_raw}")
80
+
81
+ # Layer-A frame for residual baselines + booster columns.
82
+ frame = pd.DataFrame(rows)
83
+ for name, default in defaults.items():
84
+ if name not in frame.columns and not re.fullmatch(r"emb_\d+", name) and not name.startswith(
85
+ "tfidf_"
86
+ ):
87
+ frame[name] = default
88
+ elif name in frame.columns:
89
+ frame[name] = pd.to_numeric(frame[name], errors="coerce").fillna(default)
90
+
91
+ # Residualize raw MiniLM with shipped OLS coeffs, then CAV projection.
92
+ z_cols: list[np.ndarray] = []
93
+ for name in baseline_names:
94
+ if name == "intercept":
95
+ z_cols.append(np.ones(len(rows), dtype=np.float64))
96
+ continue
97
+ col = frame[name].to_numpy(dtype=np.float64) if name in frame.columns else np.zeros(len(rows))
98
+ z_cols.append(np.nan_to_num(col, nan=0.0, posinf=0.0, neginf=0.0))
99
+ z = np.column_stack(z_cols)
100
+ if z.shape[1] != coef.shape[0]:
101
+ raise SystemExit(
102
+ f"Residual baseline width {z.shape[1]} != coef rows {coef.shape[0]} "
103
+ f"(names={baseline_names})"
104
+ )
105
+ resid = emb - z @ coef
106
+ proj = resid @ direction.reshape(-1)
107
+ frame["res_emb_cav_proj"] = proj.astype(np.float32)
108
+ frame["res_emb_cav_proj_sq"] = (proj * proj).astype(np.float32)
109
+
110
+ emb_pca = pca.transform(emb.astype(np.float32))
111
+ emb_pca_df = pd.DataFrame(
112
+ emb_pca, columns=[f"emb_{i}" for i in range(emb_pca.shape[1])]
113
+ )
114
+ texts = [str(r.get("full_text", "")) for r in rows]
115
+ tfidf_z = svd.transform(tfidf.transform(texts)).astype(np.float32)
116
+ tfidf_df = pd.DataFrame(
117
+ tfidf_z, columns=[f"tfidf_{i}" for i in range(tfidf_z.shape[1])]
118
+ )
119
+ drop_emb = [c for c in frame.columns if re.fullmatch(r"emb_\d+", c)]
120
+ if drop_emb:
121
+ frame = frame.drop(columns=drop_emb)
122
+ frame = pd.concat(
123
+ [frame.reset_index(drop=True), emb_pca_df, tfidf_df],
124
+ axis=1,
125
+ )
126
+
127
+ x = np.column_stack(
128
+ [
129
+ pd.to_numeric(frame[c], errors="coerce").fillna(defaults.get(c, 0.0)).to_numpy(
130
+ dtype=np.float32
131
+ )
132
+ if c in frame.columns
133
+ else np.full(len(rows), defaults.get(c, 0.0), dtype=np.float32)
134
+ for c in feature_names
135
+ ]
136
+ )
137
+ return x, feature_names
138
+
139
+
140
+ def predict_rows(bundle: Path, rows: list[dict[str, Any]]) -> list[dict[str, Any]]:
141
+ x, _names = build_feature_matrix(rows, bundle=bundle)
142
+ model = lgb.Booster(model_file=str(bundle / "model_level.txt"))
143
+ scores = np.asarray(model.predict(x), dtype=np.float64)
144
+ out: list[dict[str, Any]] = []
145
+ for row, score in zip(rows, scores, strict=True):
146
+ item = {
147
+ "y_pred": float(score),
148
+ "y_pred_eng_rate": float(np.expm1(np.clip(score, -1.0, 30.0))),
149
+ }
150
+ if "tweet_id" in row:
151
+ item["tweet_id"] = row["tweet_id"]
152
+ out.append(item)
153
+ return out
154
+
155
+
156
+ def main() -> None:
157
+ p = argparse.ArgumentParser(description=__doc__)
158
+ p.add_argument("--bundle", type=Path, required=True, help="Release bundle directory")
159
+ p.add_argument("--input", type=Path, required=True, help="JSON or JSONL feature rows")
160
+ p.add_argument("--output", type=Path, default=None, help="Write predictions JSON")
161
+ args = p.parse_args()
162
+ rows = _load_json_rows(args.input)
163
+ preds = predict_rows(args.bundle, rows)
164
+ text = json.dumps(preds, indent=2) + "\n"
165
+ if args.output:
166
+ args.output.write_text(text)
167
+ print(f"Wrote {len(preds)} predictions → {args.output}")
168
+ else:
169
+ print(text, end="")
170
+
171
+
172
+ if __name__ == "__main__":
173
+ main()
res_emb_baseline_coef.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:393300a86a51f33f40905ac91a7983457a8b7ff2efcf5f2c59ad79a79462e39d
3
+ size 12416
res_emb_baselines.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "names": [
3
+ "intercept",
4
+ "account_mean_rate",
5
+ "is_reply",
6
+ "inbound_replies_per_tweet"
7
+ ],
8
+ "quantile": 0.1,
9
+ "nonreply_only": true
10
+ }
res_emb_cav_direction.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8d1660dc66d9c11429345a0efcc14f4edb204b13c2785388d03bcf4f4dc4b12
3
+ size 3200
text_svd.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:32132588125026dcadfc3c12d917fafa44d5a0c694642453e461066c1261ea29
3
+ size 51203815
tfidf.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6a9878d4c03ecbdf0a46f85dccdf53380168e9c93fd2e6cfcb406cb27e31d0a7
3
+ size 1962598