NewsMTSC: (Multi-)Target-dependent Sentiment Classification in News Articles

Overview

NewsMTSC: (Multi-)Target-dependent Sentiment Classification in News Articles

NewsMTSC is a dataset for target-dependent sentiment classification (TSC) on news articles reporting on policy issues. The dataset consists of more than 11k labeled sentences, which we sampled from news articles from online US news outlets. More information can be found in our paper published at the EACL 2021.

This repository contains the dataset for target-dependent sentiment classification in news articles reporting on policy issues. Additionally, the repository contains our model named GRU-TSC, which achieves state-of-the-art TSC classification performance on NewsMTSC. Check it out - it works out of the box :-)

This readme consists of the following parts:

If you are only looking for the dataset, you can download it here or view it here.

To make the model available also to users without programming skills, we aimed to make the installation and using the model as easy as possible. If you face any issue with using the model or notice an issue in our dataset, you are more than welcome to open an issue.

Installation

It's super easy, we promise!

To keep things easy, we use Anaconda for setting up requirements. If you do not have it yet, follow Anaconda's installation instructions. NewsMTSC was tested on MacOS and Ubuntu; other OS may work, too. Let us know :-)

1. Setup the conda environment:

conda create --yes -n newsmtsc python=3.7
conda activate newsmtsc

2. Clone the repository:

git clone [email protected]:fhamborg/NewsMTSC.git
cd NewsMTSC

3. Install pytorch:

Choose either of the following. Either use this command if your GPU supports CUDA:

conda install --yes "pytorch=1.7.1" torchvision cudatoolkit=10.1 -c pytorch

Or use this command if your GPU does not support CUDA, you don't know what CUDA is, or if the previous command gives you an error:

conda install --yes "pytorch=1.7.1" torchvision -c pytorch

4. Install remaining packages:

=2.1,<3" conda install --yes -c anaconda requests gensim openpyxl networkx pip install "transformers>=3.1.0,<4" python -m spacy download en_core_web_sm ">
conda install --yes pandas tqdm scikit-learn
conda install --yes -c conda-forge boto3 regex sacremoses jsonlines matplotlib tabulate imbalanced-learn "spacy>=2.1,<3"
conda install --yes -c anaconda requests gensim openpyxl networkx
pip install "transformers>=3.1.0,<4"
python -m spacy download en_core_web_sm

5. Download our model:

python download.py

You're all set now :-)

Target-dependent Sentiment Classification

Target-dependent sentiment classification works out-of-the-box. Have a look at infer.py or give it a try:

python infer.py

Training

There are two entry points to the system. train.py is used to train and evaluate a specific model on a specific dataset using specific hyperparameters. We call a single run an experiment. controller.py is used to run multiple experiments automatically. This is for example useful for model selection and evaluating hundreds or thousands of combinations of models, hyperparameters, and datasets.

Running a single experiment

Goal: training a model with a user-defined (hyper)parameter combination.

train.py allows fine-grained control over the training and evaluation process, yet for most command line arguments we provide useful defaults. Two arguments are required:

  • --own_model_name (which model is used, e.g., grutsc),
  • --dataset_name (which dataset is used, e.g., newsmtsc-rw).

For more information refer to train.py and combinations_absadata_0.py. If you just want to get started quickly, the command below should work out of the box.

python train.py --own_model_name grutsc --dataset_name newsmtsc-rw

Running multiple experiments

Goal: finding the (hyper)parameter combination to train a model that achieves the best performance.

controller.py takes a set of values for each argument, creates combinations of arguments, applies conditions to remove unnecessary combinations (e.g., some arguments may only be used for a specific model), and creates a multiprocessing pool to run experiments of these argument combinations in parallel. After completion, controller.py creates a summary, which contains detailed results, including evaluation performance, of all experiments. By using createoverview.py, you can export this summary into an Excel spreadsheet.

Acknowledgements

This repository is in part based on ABSA-PyTorch. We thank Song et al. for making their excellent repository open source.

How to cite

If you use the dataset or model, please cite our paper (PDF):

@InProceedings{Hamborg2021b,
  author    = {Hamborg, Felix and Donnay, Karsten},
  title     = {NewsMTSC: (Multi-)Target-dependent Sentiment Classification in News Articles},
  booktitle = {Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics (EACL 2021)},
  year      = {2021},
  month     = {Apr.},
  location  = {Virtual Event},
}
Comments
  • Error in Google Colab

    Error in Google Colab

    Hello!

    I am trying to use the NewsSentiment package on Google Colab. After successful installation using !pip3 install NewsSentiment with the python version 3.7.12, I get an error just from using:

    from NewsSentiment import TargetSentimentClassifier
    tsc = TargetSentimentClassifier()
    
    usage: ipykernel_launcher.py [-h] [--training_mode [TRAINING_MODE]]
                                 [--own_model_name OWN_MODEL_NAME]
                                 [--dataset_name DATASET_NAME]
                                 [--data_format DATA_FORMAT]
                                 [--optimizer OPTIMIZER]
                                 [--initializer INITIALIZER]
                                 [--learning_rate LEARNING_RATE]
                                 [--dropout DROPOUT] [--l2reg L2REG]
                                 [--num_epoch NUM_EPOCH] [--batch_size BATCH_SIZE]
                                 [--log_step LOG_STEP] [--max_seq_len MAX_SEQ_LEN]
                                 [--polarities_dim POLARITIES_DIM]
                                 [--device DEVICE] [--seed SEED]
                                 [--local_context_focus LOCAL_CONTEXT_FOCUS]
                                 [--SRD SRD] [--snem SNEM] [--devmode [DEVMODE]]
                                 [--experiment_path EXPERIMENT_PATH]
                                 [--balancing BALANCING]
                                 [--spc_lm_representation SPC_LM_REPRESENTATION]
                                 [--spc_input_order SPC_INPUT_ORDER]
                                 [--use_early_stopping [USE_EARLY_STOPPING]]
                                 [--eval_only_after_last_epoch [EVAL_ONLY_AFTER_LAST_EPOCH]]
                                 [--pretrained_model_name PRETRAINED_MODEL_NAME]
                                 [--state_dict STATE_DICT]
                                 [--single_targets [SINGLE_TARGETS]]
                                 [--multi_targets [MULTI_TARGETS]] [--loss LOSS]
                                 [--targetclasses TARGETCLASSES]
                                 [--knowledgesources KNOWLEDGESOURCES [KNOWLEDGESOURCES ...]]
                                 [--is_use_natural_target_phrase_for_spc [IS_USE_NATURAL_TARGET_PHRASE_FOR_SPC]]
                                 [--default_lm DEFAULT_LM] [--run_id RUN_ID]
                                 [--coref_mode_in_training COREF_MODE_IN_TRAINING]
                                 [--logging LOGGING]
                                 [--ignore_parsing_errors [IGNORE_PARSING_ERRORS]]
                                 [--export_finetuned_model EXPORT_FINETUNED_MODEL]
    ipykernel_launcher.py: error: unrecognized arguments: -f /root/.local/share/jupyter/runtime/kernel-64f5d3e5-ff4d-4bab-b66d-cbdb4d4203f9.json
    An exception has occurred, use %tb to see the full traceback.
    
    SystemExit: 2
    

    Any idea what this can be?

    Thanks,

    Joan

    opened by joansc 6
  • last_hidden_states being string instead of Tensor

    last_hidden_states being string instead of Tensor

    21:40:47 INFO diskdict(20):__init__|: loaded DiskDict with 6726 items from knowledge/bingliuopinion/opinion_polarity.ddict
    21:40:47 INFO diskdict(20):__init__|: loaded DiskDict with 6886 items from knowledge/mpqasubjectivity/subjclueslen1-HLTEMNLP05.tff.ddict
    21:40:47 INFO diskdict(20):__init__|: loaded DiskDict with 6468 items from knowledge/nrcemolex/NRC-Emotion-Lexicon-Wordlevel-v0.92.txt.ddict
    21:40:49 INFO infer(25):__init__|: overwriting: own_model_name=None to grutsc
    21:40:49 INFO infer(25):__init__|: overwriting: default_lm=bert-base-uncased to roberta-base
    21:40:49 INFO infer(25):__init__|: overwriting: state_dict=None to grutsc
    21:40:49 INFO infer(25):__init__|: overwriting: knowledgesources=[] to nrc_emotions mpqa_subjectivity bingliu_opinion
    21:40:49 INFO train(1045):prepare_and_start_instructor|: set default language model to roberta-base
    21:40:49 INFO train(1038):post_process_arguments|: updated total number of categories to 10 with EKS nrc_emotions
    21:40:49 INFO train(1038):post_process_arguments|: updated total number of categories to 13 with EKS mpqa_subjectivity
    21:40:49 INFO train(1038):post_process_arguments|: updated total number of categories to 15 with EKS bingliu_opinion
    21:40:49 INFO train(1064):prepare_and_start_instructor|: set number of polarity classes to 3
    21:40:49 INFO train(1071):prepare_and_start_instructor|: no random seed was given, using system time
    21:40:49 INFO train(1072):prepare_and_start_instructor|: setting random seed: 1621885249
    21:40:49 INFO train(911):_setup_cuda|: cuda information
    21:40:49 INFO train(912):_setup_cuda|: scc SGE_GPU: None
    21:40:49 INFO train(913):_setup_cuda|: arg: cuda device: None
    21:40:49 INFO train(936):_setup_cuda|: using CPU
    21:40:49 INFO train(223):create_transformer_model|: creating model for weights name: roberta-base
    21:40:49 INFO train(239):create_transformer_model|: using model_path: roberta-base
    Some weights of the model checkpoint at roberta-base were not used when initializing RobertaModel: ['lm_head.bias', 'lm_head.decoder.weight', 'lm_head.dense.weight', 'lm_head.layer_norm.bias', 'lm_head.dense.bias', 'lm_head.layer_norm.weight']
    - This IS expected if you are initializing RobertaModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).
    - This IS NOT expected if you are initializing RobertaModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).
    21:40:55 INFO train(121):__init__|: initialized transformer tokenizers and models
    21:40:55 INFO train(148):__init__|: loading weights from pretrained_models/state_dicts/grutsc...
    21:40:57 INFO train(151):__init__|: done
    21:40:57 INFO train(153):__init__|: initialized own model
    21:40:57 INFO train(212):_print_args|: n_trainable_params: 153015555, n_nontrainable_params: 0
    21:40:57 INFO train(215):_print_args|: > training arguments:
    21:40:57 INFO train(217):_print_args|: >>> training_mode: False
    21:40:57 INFO train(217):_print_args|: >>> own_model_name: grutsc
    21:40:57 INFO train(217):_print_args|: >>> dataset_name: None
    21:40:57 INFO train(217):_print_args|: >>> data_format: None
    21:40:57 INFO train(217):_print_args|: >>> optimizer: adam
    21:40:57 INFO train(217):_print_args|: >>> initializer: xavier_uniform_
    21:40:57 INFO train(217):_print_args|: >>> learning_rate: 2e-05
    21:40:57 INFO train(217):_print_args|: >>> dropout: 0.1
    21:40:57 INFO train(217):_print_args|: >>> l2reg: 0.01
    21:40:57 INFO train(217):_print_args|: >>> num_epoch: 10
    21:40:57 INFO train(217):_print_args|: >>> batch_size: 64
    21:40:57 INFO train(217):_print_args|: >>> log_step: 5
    21:40:57 INFO train(217):_print_args|: >>> max_seq_len: 150
    21:40:57 INFO train(217):_print_args|: >>> polarities_dim: 3
    21:40:57 INFO train(217):_print_args|: >>> device: cpu
    21:40:57 INFO train(217):_print_args|: >>> seed: 1621885249
    21:40:57 INFO train(217):_print_args|: >>> local_context_focus: cdm
    21:40:57 INFO train(217):_print_args|: >>> SRD: 3
    21:40:57 INFO train(217):_print_args|: >>> snem: f1_macro
    21:40:57 INFO train(217):_print_args|: >>> devmode: False
    21:40:57 INFO train(217):_print_args|: >>> experiment_path: ./
    21:40:57 INFO train(217):_print_args|: >>> balancing: None
    21:40:57 INFO train(217):_print_args|: >>> spc_lm_representation: mean_last
    21:40:57 INFO train(217):_print_args|: >>> spc_input_order: text_target
    21:40:57 INFO train(217):_print_args|: >>> use_early_stopping: False
    21:40:57 INFO train(217):_print_args|: >>> eval_only_after_last_epoch: False
    21:40:57 INFO train(217):_print_args|: >>> pretrained_model_name: None
    21:40:57 INFO train(217):_print_args|: >>> state_dict: pretrained_models/state_dicts/grutsc
    21:40:57 INFO train(217):_print_args|: >>> single_targets: True
    21:40:57 INFO train(217):_print_args|: >>> multi_targets: False
    21:40:57 INFO train(217):_print_args|: >>> loss: crossentropy
    21:40:57 INFO train(217):_print_args|: >>> targetclasses: newsmtsc3
    21:40:57 INFO train(217):_print_args|: >>> knowledgesources: ('nrc_emotions', 'mpqa_subjectivity', 'bingliu_opinion')
    21:40:57 INFO train(217):_print_args|: >>> is_use_natural_target_phrase_for_spc: False
    21:40:57 INFO train(217):_print_args|: >>> default_lm: roberta-base
    21:40:57 INFO train(217):_print_args|: >>> run_id: 0
    21:40:57 INFO train(217):_print_args|: >>> coref_mode_in_training: ignore
    21:40:57 INFO train(217):_print_args|: >>> base_path: /home/moritz/Documents/Hiwi/NewsMTSC
    /home/moritz/anaconda3/envs/newsmtsc/lib/python3.7/site-packages/transformers/tokenization_utils_base.py:2110: FutureWarning: The `pad_to_max_length` argument is deprecated and will be removed in a future version, use `padding=True` or `padding='longest'` to pad to the longest sequence in the batch, or use `padding='max_length'` to pad to a max length. In this case, you can give a specific length with `max_length` (e.g. `max_length=45`) or leave max_length to None to pad to the maximal input size of the model (e.g. 512 for Bert).
      FutureWarning,
    21:40:57 WARNING dataset(194):_create_word_to_wordpiece_mapping|: overlap when mapping tokens to wordpiece (allow overwriting because Roberta is used)
    Traceback (most recent call last):
      File "/snap/pycharm-educational/38/plugins/python-ce/helpers/pydev/pydevd.py", line 1483, in _exec
        pydev_imports.execfile(file, globals, locals)  # execute the script
      File "/snap/pycharm-educational/38/plugins/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
        exec(compile(contents+"\n", file, 'exec'), glob, loc)
      File "/home/moritz/Documents/Hiwi/NewsMTSC/infer.py", line 155, in <module>
        text_right=", you have to admit that he’s an astute reader of politics.",
      File "/home/moritz/Documents/Hiwi/NewsMTSC/infer.py", line 88, in infer
        outputs = self.model(inputs)
      File "/home/moritz/anaconda3/envs/newsmtsc/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
        result = self.forward(*input, **kwargs)
      File "/home/moritz/Documents/Hiwi/NewsMTSC/models/singletarget/grutscsingle.py", line 132, in forward
        (last_hidden_states, knowledge_embedded), dim=2
    TypeError: expected Tensor as element 0 in argument 0, but got str
    

    last_hidden_states has indeed the string value “last_hidden_states” (i.e. last_hidden_states = “last_hidden_states”) after the statement in https://github.com/fhamborg/NewsMTSC/blob/aaa358baf1473ecab22585c73c6d52307e6a3179/models/singletarget/grutscsingle.py#L102-L106

    opened by movabo 4
  • Strange results on Hugging Face

    Strange results on Hugging Face

    Hello!

    I am testing your model uploaded on Hugging Face( roberta-targeted-sentiment-classification-newsarticles) and its giving some strange results. Just from inputting text on the example text box I get:

    Two children among 3 Eritrean refugees killed in Tigray air raid. - LABEL_0=0.53 LABEL_1=0.47 Gunfire heard as BBC visits scene of Kazakh clashes. - LABEL_0=0.539 LABEL_1=0.461 Trinity College Dublin begins €90m project to relocate vulnerable books - LABEL_0=0.506 LABEL_1=0.494 US economy added 199,000 new jobs in December as unemployment rate drops - LABEL_0=0.506 LABEL_1=0.494

    If I use transformers with my own python code sentiment_analysis = pipeline("sentiment-analysis", model=folder, tokenizer=folder, return_all_scores=True), I get slightly different results:

    Two children among 3 Eritrean refugees killed in Tigray air raid. - LABEL_0=0.59 LABEL_1=0.41 Gunfire heard as BBC visits scene of Kazakh clashes. - LABEL_0=0.6 LABEL_1=0.39 Trinity College Dublin begins €90m project to relocate vulnerable books - LABEL_0=0.59 LABEL_1=0.40 US economy added 199,000 new jobs in December as unemployment rate drops - LABEL_0=0.59 LABEL_1=0.41

    I assume LABEL_0 corresponds the proability the sentence is negative in sentiment...? Anyway, I do not see relevant results from the model on both cases and I am wondering if it's because I am missing something.

    Thanks and keep up with the amazing work!

    Joan

    opened by joansc 3
  • Model update

    Model update

    Hi, I recent rework the LCF-BERT model, now it is much faster and stable. If you have interest to update the model, please see PyABSA.

    Cheers,

    Yang Heng

    opened by yangheng95 3
  • Fix several bugs, prepare PyTorch hub support

    Fix several bugs, prepare PyTorch hub support

    Bugs fixed:

    • AttributeError: spacy.pipeline.DependencyParser object has no attribute 'labels' -> Allow spacy versions greater 2.0.*
    • ModuleNotFoundError: No module named 'models.singletarget.stancedetectionpaper' -> Local import in method where it's required
    • ModuleNotFoundError: No module named 'models.singletarget.knowledgesourceshosseiniatdbert' -> Local import in method where it's required
    opened by movabo 3
  • How to deal with sentence with multiple target with GRUTSC?

    How to deal with sentence with multiple target with GRUTSC?

    Hi @fhamborg,

    I am sort of confused with the implementation on how to deal with sentences with multiple target using the GRUTSC model in training time.

    Do you end you making multiple inputs for the same sentence for each target? eg. input1 = [cls,sentence,sep,target1,sep] eg. input2 = [cls,sentence,sep,target2,sep] and so on..?

    opened by Pager07 2
  • Difference between huggingface and

    Difference between huggingface and "normal" dataset

    Hello,

    Thank you for sharing your code and datasets.

    I notice there's a difference in the total number of samples between the huggingface and the normal version of the dataset. Could you explain me ?

    Also in your paper, I understand that you make several sampling of dev and test from the devtest_xx.jsonl file ? Can you confirm ?

    Thanks a lot

    opened by EvanDufraisse 1
  • download.py error

    download.py error

      ~/IdeaProjects/NewsMTSC   main ···································································································································································································  4s  CompanySentimentNews  15:54:38
    ❯ python download.py
    15:54:47 INFO diskdict(20):__init__|: loaded DiskDict with 6726 items from knowledge/bingliuopinion/opinion_polarity.ddict
    15:54:47 INFO diskdict(20):__init__|: loaded DiskDict with 6886 items from knowledge/mpqasubjectivity/subjclueslen1-HLTEMNLP05.tff.ddict
    15:54:47 INFO diskdict(20):__init__|: loaded DiskDict with 6468 items from knowledge/nrcemolex/NRC-Emotion-Lexicon-Wordlevel-v0.92.txt.ddict
    Traceback (most recent call last):
      File "download.py", line 111, in <module>
        Download.run_from_cmd()
      File "download.py", line 102, in run_from_cmd
        return cls(**args)
      File "download.py", line 19, in __init__
        from train import OWN_MODELNAME2CLASS
      File "/Users/felix/IdeaProjects/NewsMTSC/train.py", line 29, in <module>
        from dataset import FXDataset, RandomOversampler, FXEasyTokenizer
      File "/Users/felix/IdeaProjects/NewsMTSC/dataset.py", line 101, in <module>
        "aux",
    AssertionError
      ~/IdeaProjects/NewsMTSC   main
    
    opened by fhamborg 1
  • may  I want  your dataset about  train.jsonl and test_mt.jsonl,test_rw.jsonl?

    may I want your dataset about train.jsonl and test_mt.jsonl,test_rw.jsonl?

    Hello ,I am apost graduate student,I am interested in your work on news sentiment analysis, I have seen your dataset on github ,but the number of train.jsonl is 7758,test_mt is 721,test_rw is 1067,It is not same from your paper,may I want your complete dataset? my gmail is : [email protected],Thank you very much 👍

    opened by CMM915915 1
  • NewsTSC

    NewsTSC

    Hi Felix,

    I am writing to you about the NEWSTSC repo which is now archived. I ran the train script to train LCF_BERT with the following settings

    python train.py  --model_name lcf_bert --optimizer adam --initializer xavier_uniform_ --learning_rate 3e-5 --batch_size 16 --balancing lossweighting --num_epoch 4 --lsr False --use_tp_placeholders False --eval_only_after_last_epoch True --devmode False --local_context_focus cdm --SRD 3 --pretrained_model_name bert_news_ccnc_10mio_3ep --snem recall_avg --dataset_name newstsc --experiment_path ./experiments/newstsc_20191126-115759/0/ --crossval 0 --task_format newstsc --device cuda:0
    

    I found that the recall_avg score is ~0.65 after 4 epochs. (this is approximately what the paper for NEWTSC describes )

    I then downloaded the fine-tuned weights "lcf_bert_newstsc_val_recall_avg_0.5954_epoch3" and ran test on the given test set for NEWSTSC. I am getting recall_avg scores ~0.825.

    Were the provided fine-tuned weights generated from the 3k sentence dataset provided here?

    opened by Pager07 1
  • Fix UnboundLocalError thrown during training

    Fix UnboundLocalError thrown during training

    NewsSentiment/train.py --own_model_name grutsc --dataset_name newsmtsc-rw threw this error after some time during training:

    Traceback (most recent call last):
      File "NewsSentiment/train.py", line 1379, in <module>
        prepare_and_start_instructor(opt)
      File "NewsSentiment/train.py", line 1206, in prepare_and_start_instructor
        ins.run()
      File "NewsSentiment/train.py", line 866, in run
        criterion, optimizer, train_data_loader, dev_data_loader
      File "NewsSentiment/train.py", line 504, in _train
        selected_model_dev_stats,
      File "NewsSentiment/train.py", line 526, in _intraining_evaluation_and_model_save
        dev_stats = self._evaluate(dev_data_loader)
      File "NewsSentiment/train.py", line 767, in _evaluate
        stats = self.evaluator.calc_statistics(y_true, y_pred, t_outputs_confidence)
    UnboundLocalError: local variable 't_outputs_confidence' referenced before assignment
    

    Looks like an oversight when this variable was introduced in 213c1da0 as in some circumstances this variable can be referenced before assignment.

    opened by simonepstein 0
  • Package Requirements: cudatoolkit 10.1

    Package Requirements: cudatoolkit 10.1

    Hi! Thank you for bringing this work to us!

    I tried to install the NewsSentiment[cuda] package in a conda environment with cudatoolkit installed. Cudatoolkit version is 10.1.243. I keep getting the error that the version is not satisfied. Below is the command and error statement.

    (newsmtsc) C:\Users\nguye>pip install NewsSentiment[cuda]==1.1.9
    ERROR: Could not find a version that satisfies the requirement cudatoolkit==10.1; extra == "cuda" (from newssentiment[cuda]) (from versions: none)
    ERROR: No matching distribution found for cudatoolkit==10.1; extra == "cuda"
    

    My environment:

    (newsmtsc) C:\Users\nguye>conda list
    # packages in environment at C:\Users\nguye\anaconda3\envs\newsmtsc:
    #
    # Name                    Version                   Build  Channel
    ca-certificates           2022.10.11           haa95532_0
    certifi                   2022.12.7        py38haa95532_0
    cudatoolkit               10.1.243             h74a9793_0
    libffi                    3.4.2                hd77b12b_6
    openssl                   1.1.1s               h2bbff1b_0
    pip                       22.3.1           py38haa95532_0
    python                    3.8.15               h6244533_2
    setuptools                65.5.0           py38haa95532_0
    sqlite                    3.40.0               h2bbff1b_0
    vc                        14.2                 h21ff451_1
    vs2015_runtime            14.27.29016          h5e58377_2
    wheel                     0.37.1             pyhd3eb1b0_0
    wincertstore              0.2              py38haa95532_2
    

    For the cudatoolkit installation. There's no way on top of my mind to prevent conda to install the exact 10.1 version.

    (newsmtsc) C:\Users\nguye>conda install cudatoolkit=10.1
    Collecting package metadata (current_repodata.json): done
    Solving environment: done
    
    ## Package Plan ##
    
      environment location: C:\Users\nguye\anaconda3\envs\newsmtsc
    
      added / updated specs:
        - cudatoolkit=10.1
    
    
    The following NEW packages will be INSTALLED:
    
      cudatoolkit        pkgs/main/win-64::cudatoolkit-10.1.243-h74a9793_0
    
    
    Proceed ([y]/n)? y
    
    
    Downloading and Extracting Packages
    
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    

    I could be wrong somewhere in the installation process. Please let me know how did you deal with this.

    Thanks in advance.

    opened by anng217 0
  • Question on sentiment output

    Question on sentiment output

    Hi there authors, really impressive work with much ease to use, thanks for sharing this :)

    I have a silly question regarding the template example provided:

    • sentiment = tsc.infer_from_text("I like " ,"Peter", " but I don't like Robert.") => [{'class_id': 1, 'class_label': 'neutral', 'class_prob': 0.44148460030555725}, {'class_id': 2, 'class_label': 'positive', 'class_prob': 0.4068439304828644}, {'class_id': 0, 'class_label': 'negative', 'class_prob': 0.15167152881622314}]

    In this case, why is the output neutral? I thought it should be positive. Just to clarify, the input should be [before target] [target] [after target]?

    opened by ipheiman 1
  • Let's turn multilingual!

    Let's turn multilingual!

    Okay, so, I have decided that I want to use this amazing IMPRESSIVE work of art for predicting sentiments in spanish. I noticed that the SentimentAnalysis tool runs on Spacy and uses a English news training dataset. I just can't find the folder were spacy or the dataset are loaded. Is changing these parameters enough? Any further ideas?

    EDIT: I forked the code, edited dataset.py and made a simple way of requiring a different spacy model from the coder's input. I changed the order in FXBaseModel to require RoBERTa before the XLNET model. I plan to make new training datasets (but i just don't know how yet).

    opened by diegopaucarv 1
  • TextTooLongException not thrown when text is too long in specific case

    TextTooLongException not thrown when text is too long in specific case

    When attempting to classify sentiment with the following input, I get a misleading exception. Generally TextTooLongException seems to be thrown appropriately, but this seemed to be the one exception to that:)

    To reproduce:

    left = "market eye-sgx nifty flat; bharti infratel debuts. * nifty futures on the singapore exchange unchanged. the msci-asia pacific index, excluding japan gains 0.43 percent. * bharti infratel ltd debuts after raising about $760 million in india's biggest ipo in two years. traders expect shares to come under pressure due to concerns about the outlook for mobile tower operators. * foreign investors sold 1.33 billion rupees of stocks, while domestic institutions bought 1.33 billion rupees of stocks on thursday, when india's bse index fell 0.48 percent. * traders expect market to trade in a narrow range, with select "
    centre = "oil"
    right = " marketing companies shares to be traced on talks of hike in diesel prices."
    tsc = TargetSentimentClassifier()
    sentiment = tsc.infer_from_text(left, centre, right)
    

    I get the exception:

    TargetNotFoundException
    no target found: [market, eye, -, sgx, nifty, flat, ;, bharti, infratel, debuts, ., *, nifty, futures, on, the, singapore, exchange, unchanged, ., the, msci, -, asia, pacific, index, ,, excluding, japan, gains, 0.43, percent, ., *, bharti, infratel, ltd, debuts, after, raising, about, $, 760, million, in, india, 's, biggest, ipo, in, two, years, ., traders, expect, shares, to, come, under, pressure, due, to, concerns, about, the, outlook, for, mobile, tower, operators, ., *, foreign, investors, sold, 1.33, billion, rupees, of, stocks, ,, while, domestic, institutions, bought, 1.33, billion, rupees, of, stocks, on, thursday, ,, when, india, 's, bse, index, fell, 0.48, percent, ., *, traders, expect, market, to, trade, in, a, narrow, range, ,, with], 615, oil
    

    With package version 1.1.21

    Thanks, love the library!

    opened by bendavidsteel 1
Releases(v1.0.0)
  • v1.0.0(Apr 26, 2021)

Owner
Felix Hamborg
Loves to work on real-world issues
Felix Hamborg
Code of paper: A Recurrent Vision-and-Language BERT for Navigation

Recurrent VLN-BERT Code of the Recurrent-VLN-BERT paper: A Recurrent Vision-and-Language BERT for Navigation Yicong Hong, Qi Wu, Yuankai Qi, Cristian

YicongHong 109 Dec 21, 2022
PyTorch implementation of "data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language" from Meta AI

data2vec-pytorch PyTorch implementation of "data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language" from Meta AI (F

Aryan Shekarlaban 105 Jan 04, 2023
Chinese version of GPT2 training code, using BERT tokenizer.

GPT2-Chinese Description Chinese version of GPT2 training code, using BERT tokenizer or BPE tokenizer. It is based on the extremely awesome repository

Zeyao Du 5.6k Jan 04, 2023
Honor's thesis project analyzing whether the GPT-2 model can more effectively generate free-verse or structured poetry.

gpt2-poetry The following code is for my senior honor's thesis project, under the guidance of Dr. Keith Holyoak at the University of California, Los A

Ashley Kim 2 Jan 09, 2022
Chinese real time voice cloning (VC) and Chinese text to speech (TTS).

Chinese real time voice cloning (VC) and Chinese text to speech (TTS). 好用的中文语音克隆兼中文语音合成系统,包含语音编码器、语音合成器、声码器和可视化模块。

Kuang Dada 6 Nov 08, 2022
Python functions for summarizing and improving voice dictation input.

Helpmespeak Help me speak uses Python functions for summarizing and improving voice dictation input. Get started with OpenAI gpt-3 OpenAI is a amazing

Margarita Humanitarian Foundation 6 Dec 17, 2022
ProteinBERT is a universal protein language model pretrained on ~106M proteins from the UniRef90 dataset.

ProteinBERT is a universal protein language model pretrained on ~106M proteins from the UniRef90 dataset. Through its Python API, the pretrained model can be fine-tuned on any protein-related task in

241 Jan 04, 2023
Code for the paper TestRank: Bringing Order into Unlabeled Test Instances for Deep Learning Tasks

TestRank in Pytorch Code for the paper TestRank: Bringing Order into Unlabeled Test Instances for Deep Learning Tasks by Yu Li, Min Li, Qiuxia Lai, Ya

3 May 19, 2022
Simple, Fast, Powerful and Easily extensible python package for extracting patterns from text, with over than 60 predefined Regular Expressions.

patterns-finder Simple, Fast, Powerful and Easily extensible python package for extracting patterns from text, with over than 60 predefined Regular Ex

22 Dec 19, 2022
🤗 Transformers: State-of-the-art Natural Language Processing for Pytorch, TensorFlow, and JAX.

English | 简体中文 | 繁體中文 State-of-the-art Natural Language Processing for Jax, PyTorch and TensorFlow 🤗 Transformers provides thousands of pretrained mo

Hugging Face 77.2k Jan 03, 2023
ConvBERT-Prod

ConvBERT 目录 0. 仓库结构 1. 简介 2. 数据集和复现精度 3. 准备数据与环境 3.1 准备环境 3.2 准备数据 3.3 准备模型 4. 开始使用 4.1 模型训练 4.2 模型评估 4.3 模型预测 5. 模型推理部署 5.1 基于Inference的推理 5.2 基于Serv

yujun 7 Apr 08, 2022
Blue Brain text mining toolbox for semantic search and structured information extraction

Blue Brain Search Source Code DOI Data & Models DOI Documentation Latest Release Python Versions License Build Status Static Typing Code Style Securit

The Blue Brain Project 29 Dec 01, 2022
Pytorch-version BERT-flow: One can apply BERT-flow to any PLM within Pytorch framework.

Pytorch-version BERT-flow: One can apply BERT-flow to any PLM within Pytorch framework.

Ubiquitous Knowledge Processing Lab 59 Dec 01, 2022
texlive expressions for documents

tex2nix Generate Texlive environment containing all dependencies for your document rather than downloading gigabytes of texlive packages. Installation

Jörg Thalheim 70 Dec 26, 2022
Implementation / replication of DALL-E, OpenAI's Text to Image Transformer, in Pytorch

Implementation / replication of DALL-E, OpenAI's Text to Image Transformer, in Pytorch

Phil Wang 5k Jan 02, 2023
硕士期间自学的NLP子任务,供学习参考

NLP_Chinese_down_stream_task 自学的NLP子任务,供学习参考 任务1 :短文本分类 (1).数据集:THUCNews中文文本数据集(10分类) (2).模型:BERT+FC/LSTM,Pytorch实现 (3).使用方法: 预训练模型使用的是中文BERT-WWM, 下载地

12 May 31, 2022
Dé op-de-vlucht Pieton vertaler. Wereldwijd gebruikt door meer dan 1.000+ succesvolle bedrijven!

Dé op-de-vlucht Pieton vertaler. Wereldwijd gebruikt door meer dan 1.000+ succesvolle bedrijven!

Lau 1 Dec 17, 2021
無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXの音声合成エンジン

VOICEVOX ENGINE VOICEVOXの音声合成エンジン。 実態は HTTP サーバーなので、リクエストを送信すればテキスト音声合成できます。 API ドキュメント VOICEVOX ソフトウェアを起動した状態で、ブラウザから

Hiroshiba 3 Jul 05, 2022
Edge-Augmented Graph Transformer

Edge-augmented Graph Transformer Introduction This is the official implementation of the Edge-augmented Graph Transformer (EGT) as described in https:

Md Shamim Hussain 21 Dec 14, 2022
Linear programming solver for paper-reviewer matching and mind-matching

Paper-Reviewer Matcher A python package for paper-reviewer matching algorithm based on topic modeling and linear programming. The algorithm is impleme

Titipat Achakulvisut 66 Jul 05, 2022