From e49892428fdd1a8b77e48c7ca2e156048a2072b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93lafur=20Aron?= Date: Sun, 10 Dec 2023 12:56:45 +0000 Subject: [PATCH] update --- README.md | 45 +++++- README.pdf | Bin 0 -> 161529 bytes src/BaselineClassifiersBinary.ipynb | 221 ++------------------------ src/ProgressReport.ipynb | 48 ++++-- src/generate_classification_report.py | 22 +-- src/generate_report.ipynb | 189 ++++------------------ 6 files changed, 138 insertions(+), 387 deletions(-) create mode 100644 README.pdf diff --git a/README.md b/README.md index b91e37b..d381029 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ This section provides instructions for using the `process.py` script, which perf 1. Run the script: - python process.py -2. When prompted, select the `icetagger.bat` file located in the extracted IceNLP directory (IceNLP-1.5.0\IceNLP\bat\icetagger). +2. When prompted, select the `icetagger.bat` file located in the extracted IceNLP directory (`IceNLP-1.5.0\IceNLP\bat\icetagger`). 3. Ensure the dataset file (`IMDB-Dataset-MideindTranslate.csv`) is located in the `Datasets` directory relative to the script. 4. The script will process the dataset and output the processed data to `Datasets/IMDB-Dataset-MideindTranslate-processed-nefnir.csv`. @@ -158,6 +158,20 @@ To use a different dataset: ## Baseline Classifiers +This section provides instructions for using the `BaselineClassifiersBinary.ipynb` script, which trains SVC, Logistic Regression and Naive Bayes on English, Icelandic Google and Icelandic Miðeind datasets, it also generates classification reports for each model. + +### Prerequisites + +- Python 3.x +- PyTorch +- Pandas library +- Scikit-learn library +- Other dependencies: `os`, `time`, `numpy` + +### Usage + +To into `BaselineClassifiersBinary.ipynb` and run the cells. You have to change the `ICELANDIC_GOOGLE_CSV`, `ICELANDIC_MIDEIND_CSV` and `ENGLISH_CSV` variables to point to the correct datasets. The cell will train and print out the classification reports for each model. It will also show a diagram. You can refer to the next cell if you want to print out the most important features, altough this is not necessary. + ## Transformer Models This section provides instructions for using the `train.py` script, which trains a transformer model for sentiment analysis. @@ -193,9 +207,34 @@ To use a different dataset: - The dataset should be in CSV format with 'review' and 'sentiment' columns. - Modify the `dataset_path` variable in the script to match your dataset's filename. -# Style +## Generating Classification Reports + +This section provides instructions for using the `generate_report.py` script, which generates a classification report for a trained model. +This is useful mostly for the transformer models, as the baseline classifiers generate their own reports via the same libraries. + +This function will call the model and generate a classification report for the model. What it expects is the path to a folder of the model, the device to use, +the pandas columns to use as X and y, and whether to return the accuracy or the classification report. + +### Installation + +1. Ensure Python 3.x is installed. +2. Install the required Python packages: + - pip install transformers torch pandas scikit-learn + +### Usage + +1. Import generate_classification_report.py `import generate_classification_report as gcr` +2. Load the CSV file with the data to be tested `df = pd.read_csv('IMDB-Dataset-GoogleTranslate.csv')` +3. Invoke the function call call_model, which takes the parameters +- X_all: All review columns +- y_all: All sentiment columns +- model: The model to be used (This is a path to a file, something like `'./electra-base-google-batch8-remove-noise-model/'`) +- device: The device to be used (CUDA, cpu) +- accuracy: Whether to return accuracy or return a classification report + +### Example -[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +Example of how to generate a report can be seen in `generate_report.ipynb` - also the `generate_classification_report.py` `eval_files()` function, which is loading multiple models. # License diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..82538d9a15defce61872a1c5681c534c4015c7a0 GIT binary patch literal 161529 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 literal 0 HcmV?d00001 diff --git a/src/BaselineClassifiersBinary.ipynb b/src/BaselineClassifiersBinary.ipynb index c3f461c..88bc3ba 100644 --- a/src/BaselineClassifiersBinary.ipynb +++ b/src/BaselineClassifiersBinary.ipynb @@ -1,98 +1,5 @@ { "cells": [ - { - "cell_type": "code", - "execution_count": 32, - "id": "aae6d4d5", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import html\n", - "import re\n", - "\n", - "csv = pd.read_csv(\"../Hannes-Movie-Reviews.csv\")\n", - "\n", - "\n", - "def lower_case(txt):\n", - " return txt.lower()\n", - "\n", - "\n", - "def remove_brackets(txt):\n", - " return re.sub(r\"[()\\[\\]{}<>]\", \"\", txt)\n", - "\n", - "\n", - "def fix_repeated_characters(txt):\n", - " return re.sub(r\"(.)\\1{5,}\", r\"\\1\", txt)\n", - "\n", - "\n", - "def remove_special_characters(txt):\n", - " pattern = r\"[^a-zA-záðéíóúýþæö.?!;:,\\s]\"\n", - " txt = re.sub(pattern, \"\", txt)\n", - " return txt\n", - "\n", - "\n", - "def clean_html(txt):\n", - " clean = re.compile(\"<.*?>\")\n", - " return re.sub(clean, \"\", txt)\n", - "\n", - "\n", - "def remove_overly_long_words(txt):\n", - " return \" \".join([t for t in txt.split(\" \") if len(t) < 30])\n", - "\n", - "\n", - "def remove_noise(txt):\n", - " txt = html.unescape(txt)\n", - " txt = clean_html(txt)\n", - " txt = remove_brackets(txt)\n", - " txt = lower_case(txt)\n", - " txt = remove_special_characters(txt)\n", - " txt = fix_repeated_characters(txt)\n", - " txt = remove_overly_long_words(txt)\n", - " return txt.strip().replace(\"\\n\", \" \").replace('\"', \"\")\n", - "\n", - "\n", - "csv.drop([\"id\"], inplace=True, axis=1)\n", - "\n", - "csv[\"review\"] = csv[\"review\"].apply(\n", - " lambda review: re.sub(r\"&#(\\d+);\", lambda m: chr(int(m.group(1))), review)\n", - ")\n", - "csv[\"review\"] = csv[\"review\"].apply(lambda review: remove_noise(review))\n", - "csv[\"sentiment\"] = csv[\"sentiment\"].apply(\n", - " lambda sentiment: \"positive\" if sentiment >= 6 else \"negative\"\n", - ")\n", - "\n", - "\n", - "csv.head()\n", - "csv.to_csv(\"../Hannes-Movie-Reviews.csv\", index=False)\n", - "\n", - "# re.sub(r'&#(\\d+);',lambda m: chr(int(m.group(1))), f)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "f7e80ba4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Þetta er \\ntext sem er skiptur\\n'" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\"\"\"Þetta er \n", - "text sem er skiptur\n", - "\"\"\"" - ] - }, { "cell_type": "code", "execution_count": 14, @@ -366,6 +273,10 @@ "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import classification_report\n", "\n", + "ICELANDIC_GOOGLE_CSV = \"../IMDB-Dataset-GoogleTranslate-processed-nefnir.csv\"\n", + "ICELANDIC_MIDEIND_CSV = \"../IMDB-Dataset-MideindTranslate-processed-nefnir.csv\"\n", + "ENGLISH_CSV = \"../IMDB-Dataset-Processed.csv\"\n", + "\n", "\n", "def clear_df(data):\n", " if \"Unnamed: 0\" in data.columns:\n", @@ -442,13 +353,13 @@ " print(nb_pipeline)\n", " print(classification_report(y_test, predict_nb, digits=4))\n", "\n", - " # print(svc_pipeline)\n", - " # print(classification_report(y_test, predict_svc, digits=4))\n", + " print(svc_pipeline)\n", + " print(classification_report(y_test, predict_svc, digits=4))\n", "\n", - " # print(lr_pipeline)\n", - " # print(classification_report(y_test, predict_lr, digits=4))\n", + " print(lr_pipeline)\n", + " print(classification_report(y_test, predict_lr, digits=4))\n", "\n", - " # return { \"SVC\": (1,2,3,4 ), \"Naive Bayes\": (1,2,3,4), \"Logistic Regression\": (1,2,3,4) }, [\"F1\", \"Recall\", \"Precision\", \"Accuracy\"]\n", + " \n", " return (\n", " (\n", " {\n", @@ -467,16 +378,8 @@ "def plot_f1(f1s, title):\n", " labels, values = f1s\n", " plt.figure(figsize=(32, 16))\n", - " fig, ax = plt.subplots(figsize=(24, 12)) # layout='constrained')\n", + " fig, ax = plt.subplots(figsize=(24, 12))\n", " plt.grid(color=\"grey\", linestyle=\"-.\")\n", - " # for s in ['top', 'bottom', 'left', 'right']:\n", - " # ax.spines[s].set_visible(False)\n", - " # ax.xaxis.set_ticks_position('none')\n", - " # ax.yaxis.set_ticks_position('none')\n", - "\n", - " # Add padding between axes and labels\n", - " # ax.xaxis.set_tick_params(pad = 5)\n", - " # ax.yaxis.set_tick_params(pad = 10)\n", " x = np.arange(4)\n", " width = 0.25\n", " multiplier = 0\n", @@ -496,77 +399,15 @@ " plt.show()\n", "\n", "\n", - "# data = classify(\"../IMDB-Dataset-GoogleTranslate-Processed.csv\")\n", - "data2, nb_mideind, svc_mideind, lr_mideind = classify(\n", - " \"../IMDB-Dataset-MideindTranslate-processed-nefnir.csv\"\n", - ")\n", - "data3, nb_google, svc_google, lr_google = classify(\n", - " \"../IMDB-Dataset-GoogleTranslate-processed-nefnir.csv\"\n", - ")\n", - "data1, nb_english, svc_english, lr_english = classify(\"../IMDB-Dataset-Processed.csv\")\n", "\n", - "# Hannes-Movie-Reviews-proccessed-nefnir-sentiment.csv\n", - "data4, nb_hannes1, svc_hannes1, lr_hannes1 = classify(\n", - " None,\n", - " \"../IMDB-Dataset-GoogleTranslate-processed-nefnir.csv\",\n", - " \"../Hannes-Movie-Reviews-processed-nefnir-sentiment.csv\",\n", - ")\n", - "data5, nb_hannes2, svc_hannes2, lr_hannes2 = classify(\n", - " None,\n", - " \"../IMDB-Dataset-MideindTranslate-processed-nefnir.csv\",\n", - " \"../Hannes-Movie-Reviews-processed-nefnir-sentiment.csv\",\n", - ")\n", + "data2, nb_mideind, svc_mideind, lr_mideind = classify(ICELANDIC_MIDEIND_CSV)\n", + "data3, nb_google, svc_google, lr_google = classify(ICELANDIC_GOOGLE_CSV)\n", + "data1, nb_english, svc_english, lr_english = classify(ENGLISH_CSV)\n", "\n", - "# data4, nb_hannes, svc_hannes, lr_hannes = classify(\"../Hannes-Movie-Reviews-proccessed-nefnir-sentiment.csv\")\n", "\n", "plot_f1(data1, \"English Classification Report\")\n", "plot_f1(data2, \"Icelandic Miðeind Classification Report\")\n", - "plot_f1(data3, \"Icelandic Google Classification Report\")\n", - "plot_f1(data4, \"Hannes Google Classification Report\")\n", - "plot_f1(data5, \"Hannes Miðeind Classification Report\")" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "c473c1d7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "sentiment\n", - "positive 932\n", - "negative 179\n", - "Name: count, dtype: int64" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import pandas as pd\n", - "\n", - "df = pd.read_csv(\"../Hannes-Movie-Reviews-processed-nefnir.csv\")\n", - "df.drop([\"Unnamed: 0\", \"id\"], axis=1, inplace=True)\n", - "\n", - "\n", - "# df.assign(condition=lambda d: ('positive' if d['sentiment'] > 6 else 'negative'))\n", - "\n", - "# 6-7-8-9-10\n", - "# 1-2-3-4-5\n", - "for sentiment in df[\"sentiment\"]:\n", - " if sentiment >= 6:\n", - " df[\"sentiment\"].replace(sentiment, \"positive\", inplace=True)\n", - " else:\n", - " df[\"sentiment\"].replace(sentiment, \"negative\", inplace=True)\n", - "\n", - "df[\"sentiment\"].value_counts()\n", - "\n", - "\n", - "# df.to_csv(\"../Hannes-Movie-Reviews-proccessed-nefnir-sentiment.csv\")" + "plot_f1(data3, \"Icelandic Google Classification Report\")" ] }, { @@ -786,40 +627,6 @@ "show(lr_hannes1, \"LR Google Hannes %s\")\n", "show(lr_hannes2, \"LR Miðeind Hannes %s\")" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e8a14482", - "metadata": {}, - "outputs": [], - "source": [ - "def evaluate_score(text):\n", - " text = [text]\n", - " s = logistic_regression_pipeline.predict(text)\n", - " # find all features and coefficients that have the text and sum up the values\n", - " s = sum(\n", - " [\n", - " i[1]\n", - " for x, i in enumerate(\n", - " zip(\n", - " logistic_regression_pipeline[0].get_feature_names_out(),\n", - " logistic_regression_pipeline[1].coef_[0],\n", - " )\n", - " )\n", - " if i[0] in text[0].split(\" \")\n", - " ]\n", - " )\n", - " if s >= 1:\n", - " print(\"(%s) Positive, score is %f\" % (text[0], s))\n", - " else:\n", - " print(\"(%s) Negative, score is %f\" % (text[0], s))\n", - "\n", - "\n", - "evaluate_score(\"hræðilegur frábær\")\n", - "evaluate_score(\"slæmur vel besta\")\n", - "evaluate_score(\"lélegur vel\")" - ] } ], "metadata": { diff --git a/src/ProgressReport.ipynb b/src/ProgressReport.ipynb index 29cffd1..540a9f3 100644 --- a/src/ProgressReport.ipynb +++ b/src/ProgressReport.ipynb @@ -332,33 +332,33 @@ "| Talk about English model in Methods | Birkir | 9 November | Birkir | 2 December |\n", "| Add baseline to Model training | Birkir | 9 November | Birkir | 23 November |\n", "| Explain F1 and calculation | Ólafur Aron | 9 November | Ólafur Aron | Discontinued |\n", - "| Add verkáætlun in slides | Ólafur Aron | 9 November | Eysteinn | |\n", + "| Add verkáætlun in slides | Ólafur Aron | 9 November | Birkir | 4 December |\n", "| Explain that we are using Kanban in report | Ólafur Aron | 9 November | Ólafur Aron | 14 November |\n", "| Add efnisyfirlit in report | Ólafur Aron | 9 November | Ólafur Aron | 17 November |\n", "| Remove images from report | Ólafur Aron | 9 November | Ólafur Aron | 17 November |\n", - "| Explain Miðeind in slides | Ólafur Aron | 9 November | Eysteinn | |\n", - "| Explain OfficialStation/TwitterKvikmyndaryni in Slides | Ólafur Aron | 9 November | | |\n", + "| Explain Miðeind in slides | Ólafur Aron | 9 November | Birkir | 4 December |\n", + "| Explain OfficialStation/TwitterKvikmyndaryni in Slides | Ólafur Aron | 9 November | Eysteinn | 6 December |\n", "| Complete progress report | Ólafur Aron | 9 November | Ólafur Aron | 17 November |\n", - "| Complete slides for status meeting 3 | Ólafur Aron | 9 November | Eysteinn | |\n", - "| Show tables in slides | Ólafur Aron | 9 November | | |\n", - "| Explain lemmatize and remove stop words in slides | Ólafur Aron | 9 November | | |\n", - "| Add text about tfidfvectorizer/pipelines in slides | Ólafur Aron | 9 November | | |\n", + "| Complete slides for status meeting 3 | Ólafur Aron | 9 November | Eysteinn | 6 December |\n", + "| Show tables in slides | Ólafur Aron | 9 November | Ólafur Aron | 6 December |\n", + "| Explain lemmatize and remove stop words in slides | Ólafur Aron | 9 November | Birkir | 4 December |\n", + "| Add text about tfidfvectorizer/pipelines in slides | Ólafur Aron | 9 November | Ólafur Aron | 6 December |\n", "| Talk about baseline classifiers and explain what they do/how | Ólafur Aron | 9 November | Birkir | 29 November |\n", "| Talk about transformer models and explain and what they do/how | Ólafur Aron | 9 November | Birkir | 24 November |\n", "| Explain parameters in baseline methods/transformer in final report | Ólafur Aron | 9 November | Birkir | 24 November |\n", "| Fix methods chapter FinalReport | Ólafur Aron | 9 November | Birkir | 2 December |\n", "| Add OfficialStation/Kvikmyndaryni to results chapter FinalReport | Ólafur Aron | 9 November | Ólafur Aron | 17 November |\n", "| Explain why we are testing on OfficialStation/Kvikmyndaryni | Ólafur Aron | 9 November | Ólafur Aron | 17 November |\n", - "| Explain about rannsóknarsetur we are working in in slides | Ólafur Aron | 9 November | | |\n", + "| Explain about rannsóknarsetur we are working in in slides | Ólafur Aron | 9 November | Ólafur Aron | 9 December |\n", "| Update Framvinduskýrsla and put in overleaf | Ólafur Aron | 9 November | Ólafur Aron | 14 November |\n", "| Fix chapter 5 | Ólafur Aron | 9 November | Ólafur Aron | 2 December |\n", "| Phase 2 Progress report2 | Ólafur Aron | 18 November | Ólafur Aron | 23 November |\n", "| Discuss splitting up data from the methods chapter. | Eysteinn | 21 November | Birkir | 2 December |\n", - "| Add a section about previous work in introduction | Eysteinn | 27 November | | |\n", + "| Add a section about previous work in introduction | Eysteinn | 27 November | Eysteinn | 6 December |\n", "| Review progress report | Eysteinn | 28 November | Eysteinn | 1 December |\n", "| Write about yourself in the progress report | Eysteinn | 28 November | Birkir | 2 December |\n", - "| Add risk analysis to all phases in progress report | Eysteinn | 29 November | Eysteinn | |\n", - "| Add risk logs to all phases in progress report | Eysteinn | 29 November | Eysteinn | |\n", + "| Add risk analysis to all phases in progress report | Eysteinn | 29 November | Eysteinn | 2 December |\n", + "| Add risk logs to all phases in progress report | Eysteinn | 29 November | Eysteinn | 4 December |\n", "\n", "\n", "\n", @@ -374,6 +374,32 @@ "## Burndown" ] }, + { + "cell_type": "markdown", + "id": "cad7ac07", + "metadata": {}, + "source": [ + "\n", + "| Task | Created By | Created On | Assigned To | Status/Completed On |\n", + "|---|---|---|---|---|\n", + "| Add individuals' hours worked in the progress report | Eysteinn | 9 December | Ólafur Aron | 9 December |\n", + "| Talk more about \"_NEG\" in the presentation, something about; did it improve the performance? | Esyteinn | 9 December | Birkir | |\n", + "| Talk more about \"Marking\" in relation to nefnir. (in the research report?) | Eysteinn | 9 December | Birkir | |\n", + "| Reduce the amount of time we mention \"þýðinguna\" in the presentation | Eysteinn | 9 December | | |\n", + "| Add more comparisons in the presentation regarding Niðurstöður, focus more on comparisons | Eysteinn | 9 December | Ólafur Aron | |\n", + "| Talk more about what this process can do for something else than SA for reviews | Eysteinn | 9 December | | |\n", + "| Go over citations in research report | Eysteinn | 9 December | Eysteinn | |\n", + "| Finish Framvinduskýrsla | Ólafur Aron | 10 December | Ólafur Aron | |\n", + "| Update November progress report | Ólafur Aron | 10 December | Ólafur Aron | 10 December |\n", + "| Add unprocessed text | Ólafur Aron | 10 December | Ólafur Aron | 10 December |\n", + "\n", + "#### Tasks total\n", + "\n", + "- Ólafur Aron, Created 0, Assigned 0 (0 hours)\n", + "- Birkir, Created 0, Assigned 0 (0 hours)\n", + "- Eysteinn, Created 0, Assigned 0 (0 hours)" + ] + }, { "cell_type": "markdown", "id": "311c4ac7", diff --git a/src/generate_classification_report.py b/src/generate_classification_report.py index b4f7171..9336c85 100644 --- a/src/generate_classification_report.py +++ b/src/generate_classification_report.py @@ -96,7 +96,7 @@ def create_data_loader( return DataLoader(ds, batch_size=batch_size, num_workers=0) - def generate_report(self) -> str | dict: + def generate_report(self, accuracy): self.model.eval() y_true = [] y_pred = [] @@ -111,9 +111,11 @@ def generate_report(self) -> str | dict: prediction = torch.max(outputs.logits, dim=1) y_true.extend(labels.tolist()) y_pred.extend(prediction.indices.tolist()) - report = classification_report(y_true, y_pred, output_dict=True) - acc = accuracy_score(y_true, y_pred) - return acc + + if accuracy: + acc = accuracy_score(y_true, y_pred) + return acc + return classification_report(y_true, y_pred, output_dict=True) # NOTE: can use this if you want to print classification report class DataFrameLoader: @@ -152,21 +154,19 @@ def __init__(self, pdf_src, sample_size=None, random_state=42): self.y_test = y_test -def call_model(X_all, y_all, folder, device): +def call_model(X_all, y_all, folder, device, accuracy=True): model = AutoModelForSequenceClassification.from_pretrained(folder) model.to(device) tokenizer = AutoTokenizer.from_pretrained(folder) report = RoBERTaClassificationReport(model, tokenizer, X_all, y_all, device) - return report.generate_report() + return report.generate_report(accuracy) def generate_report(filename, folder, device): - print("*" * 50) print("Loading model from folder {} using file {}".format(folder, filename)) dfl = DataFrameLoader(filename) - - pprint(call_model(dfl.X_all, dfl.y_all, folder, device)) - print("*" * 50) + return call_model(dfl.X_all, dfl.y_all, folder, device) + def eval_files(): @@ -198,7 +198,7 @@ def eval_files(): for d in data: folder = d["folder"] filename = d["filename"] - generate_report(filename, folder, device) + print(generate_report(filename, folder, device)) if __name__ == "__main__": diff --git a/src/generate_report.ipynb b/src/generate_report.ipynb index e822135..0348eb2 100644 --- a/src/generate_report.ipynb +++ b/src/generate_report.ipynb @@ -18,153 +18,41 @@ "output_type": "stream", "text": [ "(1111, 2)\n", - "(209, 2)\n" + "(209, 2)\n", + "0 g trúi því varla að maður hafi horft á þetta t...\n", + "1 etta hefði alveg getað verið Bridgerton þáttur...\n", + "2 Mjög kjánaleg mynd, eins og við mátti búast b...\n", + "3 Mikil vitleysa. Mikið um slapstick og fratboy ...\n", + "4 Alveg öfugt við það sem að gerði upprunalegu s...\n", + " ... \n", + "95 Svo. Mikið. Ofbeldi. Svakaleg keyrsla. Keanu R...\n", + "96 Mjög skemmtileg mynd. Ekta Bond spennandi, fy...\n", + "97 Nokkuð góð skrímslastórslysamynd. Töluvert öðr...\n", + "98 Jahá... erfitt að segja margt einkennilegt vi...\n", + "99 Mjög skemmtileg mynd. Fyndin. Sniðug saga. Hug...\n", + "Name: review, Length: 100, dtype: object\n", + "0 0\n", + "1 0\n", + "2 0\n", + "3 0\n", + "4 0\n", + " ..\n", + "95 1\n", + "96 1\n", + "97 1\n", + "98 1\n", + "99 1\n", + "Name: sentiment, Length: 100, dtype: int64\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "2023-11-29 21:36:36.359136: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.\n", - "2023-11-29 21:36:36.397315: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "2023-11-29 21:38:43.624646: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.\n", + "2023-11-29 21:38:43.667135: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2023-11-29 21:36:37.154311: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 0.9777777777777777, 'recall': 0.88, 'f1-score': 0.9263157894736842, 'support': 50.0}, '1': {'precision': 0.8909090909090909, 'recall': 0.98, 'f1-score': 0.9333333333333333, 'support': 50.0}, 'accuracy': 0.93, 'macro avg': {'precision': 0.9343434343434343, 'recall': 0.9299999999999999, 'f1-score': 0.9298245614035088, 'support': 100.0}, 'weighted avg': {'precision': 0.9343434343434344, 'recall': 0.93, 'f1-score': 0.9298245614035088, 'support': 100.0}}\n", - "acc: 0.9300, seed: 9728, i: 0\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 0.9767441860465116, 'recall': 0.84, 'f1-score': 0.9032258064516129, 'support': 50.0}, '1': {'precision': 0.8596491228070176, 'recall': 0.98, 'f1-score': 0.9158878504672898, 'support': 50.0}, 'accuracy': 0.91, 'macro avg': {'precision': 0.9181966544267646, 'recall': 0.9099999999999999, 'f1-score': 0.9095568284594513, 'support': 100.0}, 'weighted avg': {'precision': 0.9181966544267646, 'recall': 0.91, 'f1-score': 0.9095568284594513, 'support': 100.0}}\n", - "acc: 0.9100, seed: 4150, i: 1\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 0.8979591836734694, 'recall': 0.88, 'f1-score': 0.888888888888889, 'support': 50.0}, '1': {'precision': 0.8823529411764706, 'recall': 0.9, 'f1-score': 0.8910891089108911, 'support': 50.0}, 'accuracy': 0.89, 'macro avg': {'precision': 0.89015606242497, 'recall': 0.89, 'f1-score': 0.88998899889989, 'support': 100.0}, 'weighted avg': {'precision': 0.89015606242497, 'recall': 0.89, 'f1-score': 0.88998899889989, 'support': 100.0}}\n", - "acc: 0.8900, seed: 9291, i: 2\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 1.0, 'recall': 0.84, 'f1-score': 0.9130434782608696, 'support': 50.0}, '1': {'precision': 0.8620689655172413, 'recall': 1.0, 'f1-score': 0.9259259259259259, 'support': 50.0}, 'accuracy': 0.92, 'macro avg': {'precision': 0.9310344827586207, 'recall': 0.9199999999999999, 'f1-score': 0.9194847020933978, 'support': 100.0}, 'weighted avg': {'precision': 0.9310344827586207, 'recall': 0.92, 'f1-score': 0.9194847020933977, 'support': 100.0}}\n", - "acc: 0.9200, seed: 8823, i: 3\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 0.9555555555555556, 'recall': 0.86, 'f1-score': 0.9052631578947369, 'support': 50.0}, '1': {'precision': 0.8727272727272727, 'recall': 0.96, 'f1-score': 0.9142857142857144, 'support': 50.0}, 'accuracy': 0.91, 'macro avg': {'precision': 0.9141414141414141, 'recall': 0.9099999999999999, 'f1-score': 0.9097744360902256, 'support': 100.0}, 'weighted avg': {'precision': 0.9141414141414141, 'recall': 0.91, 'f1-score': 0.9097744360902256, 'support': 100.0}}\n", - "acc: 0.9100, seed: 7196, i: 4\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 1.0, 'recall': 0.88, 'f1-score': 0.9361702127659575, 'support': 50.0}, '1': {'precision': 0.8928571428571429, 'recall': 1.0, 'f1-score': 0.9433962264150945, 'support': 50.0}, 'accuracy': 0.94, 'macro avg': {'precision': 0.9464285714285714, 'recall': 0.94, 'f1-score': 0.939783219590526, 'support': 100.0}, 'weighted avg': {'precision': 0.9464285714285714, 'recall': 0.94, 'f1-score': 0.939783219590526, 'support': 100.0}}\n", - "acc: 0.9400, seed: 1323, i: 5\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 0.9347826086956522, 'recall': 0.86, 'f1-score': 0.8958333333333334, 'support': 50.0}, '1': {'precision': 0.8703703703703703, 'recall': 0.94, 'f1-score': 0.9038461538461539, 'support': 50.0}, 'accuracy': 0.9, 'macro avg': {'precision': 0.9025764895330113, 'recall': 0.8999999999999999, 'f1-score': 0.8998397435897436, 'support': 100.0}, 'weighted avg': {'precision': 0.9025764895330113, 'recall': 0.9, 'f1-score': 0.8998397435897436, 'support': 100.0}}\n", - "acc: 0.9000, seed: 8920, i: 6\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", - "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'0': {'precision': 0.9183673469387755, 'recall': 0.9, 'f1-score': 0.9090909090909091, 'support': 50.0}, '1': {'precision': 0.9019607843137255, 'recall': 0.92, 'f1-score': 0.9108910891089109, 'support': 50.0}, 'accuracy': 0.91, 'macro avg': {'precision': 0.9101640656262505, 'recall': 0.91, 'f1-score': 0.90999099909991, 'support': 100.0}, 'weighted avg': {'precision': 0.9101640656262506, 'recall': 0.91, 'f1-score': 0.90999099909991, 'support': 100.0}}\n", - "acc: 0.9100, seed: 1666, i: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "2023-11-29 21:38:44.444958: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", "Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation=True` to explicitly truncate examples to max length. Defaulting to 'longest_first' truncation strategy. If you encode pairs of sequences (GLUE-style) with the tokenizer you can select this strategy more precisely by providing a specific strategy to `truncation`.\n", "/home/olafurj/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2418: 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).\n", " warnings.warn(\n" @@ -195,25 +83,18 @@ "import random\n", "from pprint import pprint\n", "import generate_classification_report as gcr\n", - "#def call_model(X_all, y_all, folder, device):\n", - "path1 = 'external-icelandic-reviews/data/imdb-split/hannes-reviews-reviews-with-sentiment.csv'\n", - "path2 = 'external-icelandic-reviews/data/imdb-split/kvikmyndaryni-reviews-with-sentiment.csv'\n", "\n", - "d1 = pd.read_csv(path1)\n", - "d2 = pd.read_csv(path2)\n", + "PATH1 = ''\n", + "PATH2 = ''\n", + "\n", + "d1 = pd.read_csv(PATH1)\n", + "d2 = pd.read_csv(PATH2)\n", "d1.drop(['num', 'rating', 'id'], axis=1, inplace=True)\n", "d2.drop(['movie', 'rating'], axis=1, inplace=True)\n", "\n", - "print(d1.shape)\n", - "print(d2.shape)\n", "\n", "df_orig = pd.merge(d1, d2, how='outer')\n", "\n", - "#print(df.shape)\n", - "#print(df.head())\n", - "#print(df.value_counts())\n", - "\n", - "#all_pos1 = d1.where(lambda x: x['sentiment'] =='Positive')\n", "device = 'cuda'\n", "model = './electra-base-google-batch8-remove-noise-model/'\n", "\n", @@ -229,9 +110,7 @@ " new_df.sentiment = new_df.sentiment.apply(lambda x: 1 if x == 'Positive' else 0)\n", " X_all = new_df.review\n", " y_all = new_df.sentiment\n", - " print(X_all)\n", - " print(y_all)\n", - " accuracy = gcr.call_model(X_all, y_all, model, device)\n", + " accuracy = gcr.call_model(X_all, y_all, model, device, accuracy=True)\n", " total += accuracy\n", " print('acc: {0:.4f}, seed: {1}, i: {2}'.format(accuracy, r, i))\n", "\n",