Designed to ensure robust generalization across time stamps for sentiment analysis in policy-related texts
Project description
tempsentpolicy
Temporally-sensitive Sentiment analysis in Policy (tempsentpolicy) is a Python package ddesigned to ensure robust generalization across time stamps for sentiment analysis in policy-related texts.
It accounts for the temporal dynamics of evolving policy discourse and evaluates sentiment models under realistic settings that mimic actual policy analysis scenarios.
Key features include:
-
Continuous time-series clustering to prioritize data points for annotation based on temporal trends.
-
Advanced model merging techniques to unify multiple models fine-tuned on distinct temporal slices.
-
Continous time series is performed using
Ruptures -
It supports the following merging techniques:
-
Uniform Souping
-
Greedy Souping
-
Task Arithmetic
-
TIES
-
DARE
-
Fisher Merging
-
RegMean Merging
-
Requirements
Required Packages
The following Python packages are required:
-
matplotlib
-
ruptures
-
pandas
-
tqdm
-
torch
-
transformers
-
datasets
-
scikit-learn
-
numpy
These will be installed automatically when using pip install.
Alternatively, you could directly install them
pip install matplotlib ruptures pandas tqdm torch transformers datasets scikit-learn numpy
Computational requirements
You require at least one GPU to use tempsentpolicy.
VRAM requirements depend on factors like batch size, model size, etc.
However, at least 12GB of VRAM is recommended
Installation
To install in python, simply do the following:
pip install tempsentpolicy
Quick start
To learn how we used it in our experiments, go to demo.ipynb. Alternatively, refer to this quick guide here:
- Lets start off by performing continous time series clustering to select our annotated data
from temporally_sensitive_sentiment_analysis_for_policy.merging import greedy_souping, ties
from temporally_sensitive_sentiment_analysis_for_policy.fine_tuning import finetune
from temporally_sensitive_sentiment_analysis_for_policy.continous_time_series_clustering import cluster_sampling, continous_time_series_clustering
df_climate=continous_time_series_clustering(df=df,time_col="timestamp_col",level="M", plot=False, penalty=0.1) # note that level "M" stands for Month
# perform continous time series clustering and selecting based on the clusters
df=cluster_sampling(df=df,sample_size=10000,stratified_col="cluster"):
df_annotated=df[df["selected"]==1].reset_index(drop=True)
- Now first lets finetune a single unified model
# finetuning
finetune(df=df_annotated, model_name="microsoft/deberta-v3-large",cluster_col_name=None,
folder_name="naive_finetuning/continous_clustering_by_month/climate_change", # note folder name to save our models
text_col='message', label_col="sentiment", label2id={"Anti":0,"Neutral":1,"Pro":2,"News":3},
learning_rate=1e-5, warmup_ratio=0.05, weight_decay=0.001,
epochs=3, batch_size=6, early_stopping_patience=2, return_val_data=False)
- Now first lets finetune individual models (one for each cluster), and merge them with greedy soup.
# finetuning
df_val=finetune(df=df_annotated, model_name="microsoft/deberta-v3-large",
cluster_col_name="cluster", # the difference is here --> we use "cluster" instead of None
folder_name="batch_finetuning/continous_clustering_by_month/climate_change", # note folder name to save our models
text_col='message',
label_col="sentiment",
label2id={"Anti":0,"Neutral":1,"Pro":2,"News":3},
learning_rate=1e-5,
warmup_ratio=0.05,
weight_decay=0.001,
epochs=8,
batch_size=6,
early_stopping_patience=2,
return_val_data=True) # note TRUE if we want to return validation data.
# Now we perform greedy souping
greedy_souping(
models_folder="models/batch_finetuning/continous_clustering_by_month/climate_change/deberta-v3-large", # where the individual models are saved
save_path="models/merged_models/continous_clustering_by_month/climate_change/greedy_soup/deberta-v3-large", # the merged model will be saved here
df_val=df_val, # validation data.
col_label="sentiment",
text_col='message',
num_labels=4,
label2id={"Anti":0,"Neutral":1,"Pro":2,"News":3})
# the model will be saved under `save_path="models/merged_models/continous_clustering_by_month/climate_change/greedy_soup/deberta-v3-large"`
NOTE
This is a temporary repository for the purposes of anonymity in the ACL SRW submission. Upon acceptance, it will be converted to a package under the main authors PyPi account. Stay tuned for updates!!!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file tempsentpolicy-0.0.1.tar.gz.
File metadata
- Download URL: tempsentpolicy-0.0.1.tar.gz
- Upload date:
- Size: 21.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d0086c03bd8ce6b722e36bb707928ff47046314036278a51fc5f9dd1b15f5e6
|
|
| MD5 |
495498f08e0c8a7ae041bcf64cbe194d
|
|
| BLAKE2b-256 |
fbfaa248eabfed195bb1634b2a25efca648472f02e2ca9bd843d68f7379d2cf4
|