From af8cbe994a23efdaec819e9e3d801dd9a2d22011 Mon Sep 17 00:00:00 2001 From: chloebt <chloe.braud@gmail.com> Date: Wed, 15 Jan 2025 14:28:12 +0100 Subject: [PATCH] add TP8 correct --- ...L_transformers_learning_2425_CORRECT.ipynb | 1714 +++++++++++++++++ 1 file changed, 1714 insertions(+) create mode 100644 notebooks/TP8_m2LiTL_transformers_learning_2425_CORRECT.ipynb diff --git a/notebooks/TP8_m2LiTL_transformers_learning_2425_CORRECT.ipynb b/notebooks/TP8_m2LiTL_transformers_learning_2425_CORRECT.ipynb new file mode 100644 index 0000000..442efa2 --- /dev/null +++ b/notebooks/TP8_m2LiTL_transformers_learning_2425_CORRECT.ipynb @@ -0,0 +1,1714 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "-bb49S7B50eh" + }, + "source": [ + "# TP 8: Transformers et transfert de modèles\n", + "\n", + "Dans cette séance, nous verrons comment utiliser un modèle pré-entrainé pour l'adapter à une nouvelle tâche (transfert). Ce TP fait suite au TP6.\n", + "\n", + "Rappel = le code ci-dessous vous permet d'installer : \n", + "- le module *transformers*, qui contient les modèles de langue https://pypi.org/project/transformers/\n", + "- la librairie de datasets pour accéder à des jeux de données\n", + "- la librairie *evaluate* : utilisée pour évaluer et comparer des modèles https://pypi.org/project/evaluate/" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "9UoSnFV250el", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "a100e8ed-aadc-4494-8d0c-b21fa3ce0d49" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: transformers in /usr/local/lib/python3.10/dist-packages (4.48.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers) (3.16.1)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.24.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.27.1)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (1.26.4)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (24.2)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (6.0.2)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (2024.11.6)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers) (2.32.3)\n", + "Requirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.21.0)\n", + "Requirement already satisfied: safetensors>=0.4.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.5.1)\n", + "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.67.1)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.24.0->transformers) (2024.9.0)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.24.0->transformers) (4.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2024.12.14)\n", + "Requirement already satisfied: accelerate in /usr/local/lib/python3.10/dist-packages (1.2.1)\n", + "Requirement already satisfied: numpy<3.0.0,>=1.17 in /usr/local/lib/python3.10/dist-packages (from accelerate) (1.26.4)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (24.2)\n", + "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from accelerate) (5.9.5)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from accelerate) (6.0.2)\n", + "Requirement already satisfied: torch>=1.10.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (2.5.1+cu121)\n", + "Requirement already satisfied: huggingface-hub>=0.21.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (0.27.1)\n", + "Requirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.10/dist-packages (from accelerate) (0.5.1)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.21.0->accelerate) (3.16.1)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.21.0->accelerate) (2024.9.0)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.21.0->accelerate) (2.32.3)\n", + "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.21.0->accelerate) (4.67.1)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.21.0->accelerate) (4.12.2)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.4.2)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (3.1.5)\n", + "Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->accelerate) (1.13.1)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy==1.13.1->torch>=1.10.0->accelerate) (1.3.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.10.0->accelerate) (3.0.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.21.0->accelerate) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.21.0->accelerate) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.21.0->accelerate) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.21.0->accelerate) (2024.12.14)\n", + "Requirement already satisfied: datasets in /usr/local/lib/python3.10/dist-packages (3.2.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from datasets) (3.16.1)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (1.26.4)\n", + "Requirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (17.0.0)\n", + "Requirement already satisfied: dill<0.3.9,>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.3.8)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from datasets) (2.2.2)\n", + "Requirement already satisfied: requests>=2.32.2 in /usr/local/lib/python3.10/dist-packages (from datasets) (2.32.3)\n", + "Requirement already satisfied: tqdm>=4.66.3 in /usr/local/lib/python3.10/dist-packages (from datasets) (4.67.1)\n", + "Requirement already satisfied: xxhash in /usr/local/lib/python3.10/dist-packages (from datasets) (3.5.0)\n", + "Requirement already satisfied: multiprocess<0.70.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.70.16)\n", + "Requirement already satisfied: fsspec<=2024.9.0,>=2023.1.0 in /usr/local/lib/python3.10/dist-packages (from fsspec[http]<=2024.9.0,>=2023.1.0->datasets) (2024.9.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets) (3.11.11)\n", + "Requirement already satisfied: huggingface-hub>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.27.1)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from datasets) (24.2)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (6.0.2)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (2.4.4)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.3.2)\n", + "Requirement already satisfied: async-timeout<6.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (4.0.3)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (24.3.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.5.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (6.1.0)\n", + "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (0.2.1)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.18.3)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.23.0->datasets) (4.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (2024.12.14)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2024.2)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->datasets) (1.17.0)\n", + "Requirement already satisfied: evaluate in /usr/local/lib/python3.10/dist-packages (0.4.3)\n", + "Requirement already satisfied: datasets>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (3.2.0)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from evaluate) (1.26.4)\n", + "Requirement already satisfied: dill in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.3.8)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.2.2)\n", + "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.32.3)\n", + "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from evaluate) (4.67.1)\n", + "Requirement already satisfied: xxhash in /usr/local/lib/python3.10/dist-packages (from evaluate) (3.5.0)\n", + "Requirement already satisfied: multiprocess in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.70.16)\n", + "Requirement already satisfied: fsspec>=2021.05.0 in /usr/local/lib/python3.10/dist-packages (from fsspec[http]>=2021.05.0->evaluate) (2024.9.0)\n", + "Requirement already satisfied: huggingface-hub>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.27.1)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from evaluate) (24.2)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (3.16.1)\n", + "Requirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (17.0.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (3.11.11)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (6.0.2)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.7.0->evaluate) (4.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (2024.12.14)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2024.2)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (2.4.4)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.3.2)\n", + "Requirement already satisfied: async-timeout<6.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (4.0.3)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (24.3.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.5.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (6.1.0)\n", + "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (0.2.1)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.18.3)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->evaluate) (1.17.0)\n" + ] + } + ], + "source": [ + "!pip install -U transformers\n", + "!pip install accelerate -U\n", + "!pip install datasets\n", + "!pip install evaluate" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Finally, if the installation is successful, we can import the transformers library:" + ], + "metadata": { + "id": "StClx_Hh9PDm" + } + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "ZBQcA9Ol50en" + }, + "outputs": [], + "source": [ + "import transformers\n", + "from datasets import load_dataset\n", + "import evaluate\n", + "import numpy as np\n", + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "3TIXCS5P50en" + }, + "outputs": [], + "source": [ + "from transformers import AutoModelForSequenceClassification, AutoTokenizer\n", + "from transformers import AutoModelForTokenClassification" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "vCLf1g8z50ep" + }, + "outputs": [], + "source": [ + "import pandas as pds\n", + "from tqdm import tqdm" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# 1- Transformers pipeline\n", + "\n", + "As seen during the course, the current state of the art for NLP is based on large language models trained using the Transformer architecture.\n", + "\n", + "In the next exercises, we will learn how to use pretrained models that are available in the HuggingFace library, starting with Trnasformers pipelines." + ], + "metadata": { + "id": "uGZBOXpTXA72" + } + }, + { + "cell_type": "code", + "source": [ + "from transformers import pipeline" + ], + "metadata": { + "id": "Od8TVRnQJ8TH" + }, + "execution_count": 5, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### 1-1 ▶▶ Exercise: use a pretrained model for French\n", + "\n", + "Load the adapted version of **FlauBERT** fine-tuned for sentiment analysis for French.\n" + ], + "metadata": { + "id": "dQo8pS93BJKf" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install sacremoses" + ], + "metadata": { + "id": "i5t_Ik688rIX", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "21e596ac-b9db-43ae-dc66-0a5b7a2f02a7" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: sacremoses in /usr/local/lib/python3.10/dist-packages (0.1.1)\n", + "Requirement already satisfied: regex in /usr/local/lib/python3.10/dist-packages (from sacremoses) (2024.11.6)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.10/dist-packages (from sacremoses) (8.1.8)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.10/dist-packages (from sacremoses) (1.4.2)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from sacremoses) (4.67.1)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "-----------\n", + "SOLUTION" + ], + "metadata": { + "id": "qvxrerHI2MYs" + } + }, + { + "cell_type": "code", + "source": [ + "pretrained_model = \"nlptown/flaubert_small_cased_sentiment\"\n", + "classifier = pipeline(model=pretrained_model)" + ], + "metadata": { + "id": "Qpuldij38AwO", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d9a9b119-adec-4e81-d455-2481475bda4b" + }, + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n", + "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", + "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", + "You will be able to reuse this secret in all of your notebooks.\n", + "Please note that authentication is recommended but still optional to access public models or datasets.\n", + " warnings.warn(\n", + "`do_lowercase_and_remove_accent` is passed as a keyword argument, but this won't do anything. `FlaubertTokenizer` will always set it to `False`.\n", + "Device set to use cuda:0\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 1-2 Using our own dataset for evaluation\n", + "\n", + "Here, we're simply going to load our dataset and evaluate a pretrained language model on it.\n", + "\n", + "HuggingFace has a library dedicated to datasets:\n", + "* 'load_dataset' can load data from a tsv/csv file, see the code below\n", + "* it directly creates the training/validation/test sets from the dictionary of input files.\n", + "\n", + "https://huggingface.co/course/chapter5/2?fw=pt\n", + "https://huggingface.co/docs/datasets/tabular_load#csv-files\n", + "https://huggingface.co/docs/datasets/v2.8.0/en/package_reference/loading_methods#datasets.load_dataset.split" + ], + "metadata": { + "id": "-xFvKUiFBnL1" + } + }, + { + "cell_type": "code", + "source": [ + "from datasets import load_dataset\n", + "\n", + "file_dict = {\n", + " \"train\" : \"allocine_train.tsv\",\n", + " \"dev\" : \"allocine_dev.tsv\",\n", + " \"test\" : \"allocine_test.tsv\"\n", + "}\n", + "\n", + "dataset = load_dataset(\n", + " 'csv', #type of files\n", + " data_files=file_dict, #input files\n", + " delimiter='\\t', # delimiter in the csv format\n", + " column_names=['movie_id', 'user_id', 'sentiment', 'review'], #column names in the csv file\n", + " skiprows=1, #skip the first line\n", + ")\n", + "\n", + "print(dataset[\"train\"])\n", + "\n", + "# Print a few examples\n", + "sample = dataset[\"train\"].shuffle(seed=42).select(range(1000))\n", + "# Peek at the first few examples\n", + "sample[:3]\n" + ], + "metadata": { + "id": "gb5KqKSYJmW3", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "f7870af0-2be3-411f-d9e4-0b3a522c1a64" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Dataset({\n", + " features: ['movie_id', 'user_id', 'sentiment', 'review'],\n", + " num_rows: 5027\n", + "})\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'movie_id': [438, 354, 633],\n", + " 'user_id': [170, 246, 350],\n", + " 'sentiment': [1, 1, 0],\n", + " 'review': [\"Completement barrés cette bande de dejantés Excellent serie Presque digne des Monthy Pytons et de leur sacré graal Alexandre Astier est très bon réalisateur en plus d'etre bon acteur J'ai hate de voir ce que peux donner le film\",\n", + " 'Cette série me fait sourire. Je trouve Chandra Wilson particulièrement drôle dans son rôle de \"Dragon\" enceinte. Ellen Pompeo est vraiment \"dans\" le rôle de Meredith Grey. Chaque acteur apporte à la série une touche d\\'humour particulière. Ce que je trouve amusant, c\\'est la passion de ces jeunes internes pour chaque nouveau \"cas\" unique.',\n", + " \"Mise en scène ridicule (vive les scènes d'extérieur, l'éclairage et l'inspiration américaine), acteurs incroyablement mauvais (tous ou presque), scénario navrant (avec des méchants risibles et des gentils mièvres). La nullité a un nom: Plus belle la vie.\"]}" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### ▶▶ Exercise: evaluate the pretrained model on your data\n", + "\n", + "* Using the model FlauBERT for sentiment analysis for French and the *pipeline* method, make predictions on some examples in the dataset\n", + "* Take a look at the predictions: do you understand the output?\n", + "* Write a piece of code to compute the score obtained by this pretrained model on your validation / dev set.\n", + " * Compute the predicted labels for all samples: what are the labels used in the model?\n", + " * Define a mapping to the labels used in the dataset.\n", + " * Compare the predicted labels to the gold ones and compute an accuracy score.\n" + ], + "metadata": { + "id": "n1kbUmQ3H3H9" + } + }, + { + "cell_type": "markdown", + "source": [ + "-----------------------------------------\n", + "SOLUTION" + ], + "metadata": { + "id": "dqheBv3jIOX6" + } + }, + { + "cell_type": "code", + "source": [ + "pretrained_model = \"nlptown/flaubert_small_cased_sentiment\"\n", + "classifier = pipeline(model=pretrained_model)\n", + "\n", + "print(dataset[\"train\"][0]['review'])\n", + "print( classifier(dataset[\"train\"][0]['review']))" + ], + "metadata": { + "id": "12kiRBwPF-89", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "3b592aa9-4c97-4103-8bee-0076358c2aa1" + }, + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "`do_lowercase_and_remove_accent` is passed as a keyword argument, but this won't do anything. `FlaubertTokenizer` will always set it to `False`.\n", + "Device set to use cuda:0\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Stephen King doit bien ricaner en constatant cette navrante histoire de disparus, les scénaristes semblent s'être inspirés de ses oeuvres mais ont bien moins son talent que celui du business. Quel perte de temps que de regarder ces personnages perdus au centre d'une histoire sans fin et sans intérêt, où 2 ou 3 épisodes suffisent pour décrocher, à l'inverse d'une série comme Desperate housewives dont les dialogues, les scénarii et les personnages contribuent sans cesse à relancer l'intérêt et le plaisir au fil des épisodes. Pourtant mes goûts initiaux m'auraient porté davantage du côté de la série fantastique. Il ne faut préjuger de rien! A bon entendeur...\n", + "[{'label': 'negative', 'score': 0.6540928483009338}]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "map_label = {'negative':0, 'very_negative':0, 'very_positive':1, 'positive':1} #, 'mixed':0}\n", + "def convert_label( output ):\n", + " label = output['label']\n", + " score = output['score']\n", + " if label in map_label:\n", + " return map_label[label]\n", + " else: #label mixed = ERROR\n", + " return -1\n", + " #else:\n", + " # print(\"label not found: \", label)" + ], + "metadata": { + "id": "bsR3dMWQDntT" + }, + "execution_count": 10, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "correct, total = 0,0\n", + "pred_labels = []\n", + "for ex in dataset[\"dev\"]:\n", + " # -- pred\n", + " prediction = classifier(ex['review'])\n", + " pred_labels.append(prediction[0]['label'])\n", + " # -- gold\n", + " gold = ex['sentiment']\n", + " # -- convert pred\n", + " mapped_label = convert_label ( prediction[0] )\n", + " if mapped_label == gold:\n", + " correct += 1\n", + " total += 1\n", + "print( correct/total )\n", + "\n", + "print( np.unique(pred_labels))" + ], + "metadata": { + "id": "YnbeOe2tELlV", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "52d3a81f-61a9-4bc0-96df-9c7d345dfe3e" + }, + "execution_count": 11, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "You seem to be using the pipelines sequentially on GPU. In order to maximize efficiency please use a dataset\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0.8214936247723132\n", + "['mixed' 'negative' 'positive' 'very_negative' 'very_positive']\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "for ex in dataset[\"dev\"]:\n", + " # -- pred\n", + " prediction = classifier(ex['review'])\n", + " # -- gold\n", + " gold = ex['sentiment']\n", + " # -- convert pred\n", + " mapped_label = convert_label ( prediction[0] )\n", + " # Analysis\n", + " if mapped_label != gold:\n", + " print( prediction[0]['label'], gold, ex[\"review\"])\n", + " #if prediction[0]['label'] == 'mixed':\n", + " # print( gold, ex[\"review\"])" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hAbI2mPc8X5c", + "outputId": "00026183-88d5-45a3-8517-92af15b1795e" + }, + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "positive 0 Newport beach est une série à découvrir d'urgence, cette série raconte les déboires de 4 amis et de leur entourage. Dommage que les diffusions soient rares et que la france n'en soit qu'à la première saison. Les personnages sont attachants, chacun avec sa personnalité bien à lui. La saison 2 est vraiment géniale est j'ai hâte de pouvoir voir la 3ème car la fin de la saison 2 nous laisse sans voix. Si vous aimez Les frères Scott vous aimerez Newport Beach.\n", + "mixed 1 j'adore cette serie . je ne peux plus m'en passer mais malheuresement je n'ai pas tf6 alors je suis obligé d'aller la regarder chez un ami . j'espere que france 2 va recommencer la diffusion\n", + "mixed 1 Un peu réticent à l'idée d'un remake de la première série, je dois avouer que la série tient plutôt bien la route. Après le premier épisode je suis rapidement devenu fan. De plus les performances des acteurs sont remarquables. Une bonne reprise...\n", + "mixed 1 excellente quoique trop courte, cette série ovni merite d'etre découverte sans tarder. tout les ingrédients qui font que cette serie soit une réussite sont réunis. j'espere sincerement qu'il y aura une saison 2, car trop de questions restent en suspens...\n", + "mixed 1 Un bonne série qui tourne autour d'objets aux multiples pouvoirs, mais le probléme ses le manques d'épisodes et ses bien dommage. A voir tout de même.\n", + "very_positive 0 Ce n'est à mes yeux, qu'une vulgaire copie. Autant j'aime beaucoup de séries mais celle-ci je suis sûre de ne plus jamais tomber dessus.\n", + "mixed 0 ouais j'ai trouver cette serie dans ma liste de Recommandations c'est bizarre ma copine c'est fait preter une saison et je ne suis vraiment pas le public viser ce systeme de Recommandations et bizarre parfoisenfin bon pour resumer c'est des histoires de riches beaux jeunes gens a ny et ils leurs arrivent des trucs voila passionnant hein\n", + "negative 1 Cette série est actuellement et de loin la meilleure série policière. Les épisodes sont divers et variés, quasiment aucuns ne se ressemblent. Cependant j'ai deux critiques(négatives) à faire, la première c'est qu'il manquerait peut être des nouveaux personnages, mais ce n'est qu'un avis... La deuxième c'est que le jeu des acteurs secondaires est plus que médiocre, du genre \"-(Grissom)Votre fille a été enlevée puis sauvagement battues à mort. -(le père)Tiens donc? C'est plus qu'embêtant ça... Bon c'est pas tout mais j'ai une femme qui m'attend\" Et c'est comme ça même si ce ne sont pas les parents les assassins ! A part ça cette série déchire tout !!! Immanquable!\n", + "mixed 0 Arriverons-nous à faire quelque chose de bien en terme de série pour adolescent un jour...\n", + "very_positive 0 Je ne vois vraiment pas pourquoi cette série existe depuis plus de 30 ans...Toujours les mêmes histoires, toujours la même fin, le gentil flic gagne sur les méchants et malgré les morts de l'épisode, tout le monde il est content, youpi...\n", + "mixed 0 en lisant le synopsis , il y a une reelle idée de scénario..ça change des séries ordinaires, en plus quel plaisir de voir Glenn Close au petit ecran mais je ne sais pas il manque un truc, un peu de peps!! ça manque d'energie! bref je n'ai pas trop accroché! dommage!\n", + "mixed 0 Je viens de voir les épisodes suivants (jusqu'au 4) La série, en vérité n'est pas mauvaise en soi. Il y'a même quelques moments presque plaisants. Finalement le seul truc sympa, une fois que la joie que nous procure toujours l'apparition d'un(e) ex Friends passée, c'est le type schizophrène au chat. Sinon, la totalité de la série nous fait poser des questions plutôt étranges comme \"Peut-être vais-je aller jouer les ermites au fond des bois ?\" ou encore \"Tiens, je vais devenir un hippie militant trotskiste\" Sans déconner, le seul truc bien dans cette série, c'est quand ça s'arrête, on revient à la réalité, et on se dit \"oh merci mon dieu j'ai du mal à joindre les deux bouts mais au moins je ne suis pas ça\" C'est comme un bad-trip, le plaisir est éphémère et a priori, on ne prend pas notre pied un seul instant, et à la fin on est tout courbaturé et on a un sale goût dans la bouche...\n", + "mixed 0 J'avais adoré la première saison. Par contre, la 2è...pas géniale. J'espère quand même que la 3è (que je n'ai pas encore vue) relèvera le niveau.\n", + "mixed 0 Le principal atout de Commissaire Moulin sont les enquêtes souvent plus noires et plus musclées(bien que pas toujours originales). Néanmoins, ca vire souvent au culte de la personnalité: en l'occurence Yves Rénier qui se la pète beaucoup trop avec sa moto, son flingue et son langage violent. Ca vire aussi à la mièvrerie habituelle avec le personnage complétement inutile de Natacha Amal. Enfin comme toutes les séries de faible niveau, cette série s'essoufle vite par manque de création entre les épisodes.\n", + "mixed 0 Enquêtes super cheap, humour pour neuneus, des acteurs aux regards de bovins... Si elle a l'air d'une anthropologue et lui d'un agent du FBI, moi suis crédible en physicien ventriloque...\n", + "positive 0 Avec la meilleure volonté du monde je n'ai jamais réussi à regarder un épisode en entier. Je trouve la série vraiment trop glauque et malsaine. Je mets quand même une étoile pour les acteurs et pour l'originalité du sujet. Mais bon, c'est vraiment pas ma tasse de thé.\n", + "positive 0 Pensez au public un peu sur TF1, tous ces jeudis passé à attendre la méthode cauet ^^\n", + "positive 0 L'histoire ne me branche plus autant qu'avant. Il y a de moins en moins d'interventions chirurgicales (ou alors elles sont vraiment trash), les couples sont séparés, bref, tout a changé. 1 étoile lui suffira.\n", + "very_positive 0 Je ne comprend pas que cette série attire autant de monde car elle ne poséde rien d'excéptionnel, le style, les acteurs et les histoires sont du vus et revus, a la rigeur les expert de miami c'est un petit peu mieux et encore\n", + "mixed 1 Bonne série. Dommage qu'elle soit si peu fidèle aux livres. Les comédiens sont plutôt biens, mais ne corresponde pas du tout aux personnages du livre. Mis à part le mauvais casting, tout est réussi.\n", + "very_negative 1 Qui peut mettre 0 étoile à une série comme ça? Pas moi, je l'ai découverte depuis 2 mois maintenant et j'adore de plus en plus, même si je ne fais que regarder les deux premières saisons, ça ne me lasse pas... J'ai même pleuré au départ d'Anna alors que ça fait 4 fois que je vois l'épisode, et ça pas beaucoup de séries sont capables de le faire, garder leurs émotions même après que l'on ait vu maintes et maintes fois l'épisode.\n", + "mixed 0 Sans vouloir faire de promotion, M6 a fait un choix intéressant on nous proposant cette série; comme d'autres (Supernatural et Tru Calling entre autre dommage pour la 1ére qu'elle est fait le choix peu judicieux de ne pas diffuser la 2nde saison) enfin je m'égare ! Cette série part d'un postulat de départ original et à fort potentiel. Le pilote plutôt décevant pour ma part est comblé par la suite et surtout par le dernier épisode. Toutefois cette série souffre de divers handicaps: - On ne va pas au bout de l'intrigue, ni n'exploite assez son coté proche de Sliders mine de rien, et qui aurait put apporter une souplesse et des intrigues intéressantes -A part Juliette Margulies les autres acteurs du casting sont peu crédibles -Enfin même si les scènes et la conclusion reste convenu, cette série aurait mérité que l'on approfondisse plus son sujet ainsi que la personnalités des différents rôles. Ainsi cette série reste un divertissement original qui sort du lot mais qui demeure bien en deçà de ses possibilités réelles et aurait méritée d'être plus creusée.\n", + "mixed 0 Attention, avi lon é dense d'1 fan absolue.Pr ceux qui en on mar que les séries américaines tournent toujours autour des mêmes choses, lisez plutôt les livres : eux valent le coup! Voilà quelques différences qui-pour moi- ne sont pas négligeable et font de cette série quelque chose de déjà-trop-vu.Dan est maigre, écrit des poèmes, fume des Camel sans filtre et porte des pantalons en velours côtelés.Il passe son temps à boire du café instantané Folger's.Jenny est totalement diffénte de celle dans la série ! Elle est petite, brune, à forte poitrine, et n'est pas amie avec Olivia. Vanessa? où est-elle passée? Serena est niaise, s'excuse toujours, est plutôt moche selon moi. Ds le livre, elle est le model, influence tout le monde, ne s'excuse jamé de quoique ce soit. Elle n'est pas un model de bonne conduite, fume et boit à volonté.Blair/Olivia n'est pas 1 peste. Elle a une forte personnalité, fait des crises de nerfs à longueur de temps. Elle fume aussi. AU début de la série elle se fait constamment vomir dpuis k'elle a appris l'homosexualité de son père. Je trouve que l'actrice ne corespond pas au personnage de Olivia. Les deux meilleures amies sont toujours bronzées et habillées de façon classe, pas ridicule. Nate fume du shit, a un look de surfeur -treillis et vieux tee-shirts il me semble- en dehors de son école NON MIXTe StJude's alr ke lé filles fréquentent Constance Billard. Chuck, kati et isabel nété pa important ds lé livre Rufus Humphrey n'est pas un personnage important, et ne vis pas dans Brooklyn mais de l'Uper West Side. Il a 1 gros ventre, les cheveux gri attachés avec 1 ficelle, c 1 hippi dé 70's o idé anarchistes.Il essai tj d nvel recettes.Lily van der woodsen ou la mèr de Olivia ne st pas importantes ds la séri de livr puisk lé parent son réputé pour vivre leurs vies é laisser fair ce k'ils veulent à leurs enfants ne st jms la et ne sav ri1 deux.Lily né pa divorcé é a un gd fils à l'université 2 Brown Erik en + de serena.\n", + "positive 0 Super, cela nous change un peu, des héros avec la science infuse, un couple vedette qui nous la joue je t'aime moi non plus et tout un tas de raccourcis plus ou moins subtils pour nous faire tenir debout un semblant de scénario ( comme le fameux hologramme ). Enfin j'adore l'heroine qui n'est autre qu'un croisement entre Bruce Lee ( paix a son âme), Einstein (paix a l'âme d'Henri Poincaré) et mon Schnauzer Nain qui a un caractère épouvantable.\n", + "very_negative 1 DEXTER impossible a éxpliquer en quelques lignes.....un personnage vascinant!!! Vous êtes Dexter,seul vous connaissaiez vraiment qui il est.... Des dialogues magnifiquements écrits parafaitements joués. Pas besoin de vous en dire plus,vous avez qu'a regarder !!!!\n", + "mixed 1 Certains critiquent l'idéologie de Dexter, la jugeant tendancieuse et très américaine. Etrangement je pense que c'est l'exact contraire. La série a quelque chose de très européen, tourne autour de ses personnage et ne cherche pas à livrer un message. Juste l'histoire dérangeante certe d'un homme sans sentiments, avec sa propre vision du monde, vivant dans un monde qui ne peut pas le comprendre. Pour Dexter, c'est un horrible sentiment de claustrophobie que de vivre dans ce monde. Personnages attachants, mise en scène et photographie remarquables, musique géniale, une série sur deux méchants, et on aime les méchants.\n", + "mixed 1 Pour moi c'est LA serie medicale du moment. Pas d'histoire d'amour ennuyeuse, un personnage attachant, des dialogues bien ficelé, même en doublage FR. Les cas sont toujours hors du commun et c'est pour ça que House les traitent! 3 étoiles seulement pour certaine scènes et épisodes ou on devinent, en bonne amateur, la suite des évènements... Mais tout de même la seule serie qui me tiens toujours en haleine à la 3ème saison.\n", + "mixed 0 Cette série n'a pas prit en moi! Vraiment je ne sais pas exactement pourquoi mais je n'ai pas du tout aimer, le thème peut être mais aussi des acteurs pas géniaux, cette série est pour moi vraiment une série trés (trop) moyenne!\n", + "positive 0 Je trouve que c'est génial! Les acteurs mériteraient au minimum le César. Un coup de coeur \"océan\" à Charlotte Désert (son nom reflète bien son jeu d'acteur) dans son rôle d'adolescente perturbée et suicidaire. D'ailleurs à quand l'internement en HP pour le personnage parce que j'ai rarement vu dans la vie une meuf qui parle à la photo d'un mec et qui prend de grandes décisions avec cet ami imaginaire. J'espère que le rôle de la comédienne dans la série n'a pas trop déteint sur sa vie personnelle car cela pourrait être dangereux. Et que dire de Pierre, dont le charme charismatique me fait penser aux mannequins des pubs pour les céréales! Il faudrait que quelqu'un apprenne à Alex comment on parle parce qu'à chaque fois qu'il ouvre la bouche, il se crache dessus... Peut-être que c'est pour la jouer racaille mais là c'est pas trop crédible. Espérons qu'aux prochains épisodes, il fera son coming out pour l'amour de Nils... Parce que là on dirait un télétubbies. Les parents qui sont dépassés par les êvènements c'est du vu et revu comme cliché. Sinon quelle originalité et quelle fraîcheur pour une série française d'un niveau égal aux grosses productions qu'étaient Les garçons de la plage ou La croisière Fol'Amour. Vivement les prochains épisodes. A voir absolument pour se tordre de rire (faites quand même gaffe au mal de bide).\n", + "very_positive 0 Je viens de lire dans une critique \"une série qui fait réfléchir sur la société\".... Oui, c'est sûr avec un gros plan sur des fesses toutes les 5 minutes, je réfléchis beaucoup, presque autant que devant Alerte à Malibu. Ce n'est qu'une vulgaire alternance de plans érotiques (sous prétexte de la chirurgie) et de plans trash et sanguinolants. Enfin, si la vie de chirurgien c'est se taper une bombasse à chaque consultation je signe tout de suite...\n", + "very_negative 1 J'avais peur d'une enieme serie sur les malades... Et bien oui c'est une serie qui se passe dans un hopital, mais le medecin est absolument delicieusement cynique, execrable et performant ! J'adoooooore. dommage qu'elle soit diffusée aussi tard..\n", + "mixed 0 je l'ai revu hier sur le cable c'est une bonne serie mais l'idee qu'une entite decife de vous envoyer quelqu'un pour vous remplacer quand il vous arrive quelque chose ca m'embete un peu mais bon a part ca pas mauvaise serie elle merite une etoile\n", + "positive 0 Série agréable à regarder... si on n'a pas vraiment autre chose à faire! L'histoire est banale, mais on s'y attache assez facilement. Les acteurs ont l'air... gentils. Voilà pour le positif. Après, comment ne pas comparer ça à 'Un dos tres'! La ressemblance est flagrante. Je trouve que même la prof de danse n'a pas le niveau des 1ères années de l'école de Carmen Arranz. Sans parler de la mauvaise histoire d'amour entre Dante et Lucia qui commence dès le 1er épisode. Enfin cette série a encore à faire ses preuves, attendons.\n", + "mixed 0 Mais si quelques objets font parfois sourire le reste est sans interêt... Un bien piètre successeur de Kaamelott( heureusement de retour à la rentrée!)\n", + "mixed 0 Californie, richesse, belles filles blondes... Mais oui c'est un nouveau Beverly Hills 90210! Bon c'est vrai que c'est une série pour ado qui parle essentiellement des problèmes qu'un ado peut rencontrer dans une belle ville bourgeoise... Mais on n'accroche pas aux acteurs (notamment les personnages de Ryan et Summer), bref une série pas révolutionnaire...\n", + "mixed 0 Série originale mais sans plus, à la fin il n'y a pas de surprises, les personnages deviennent au fil du temps sans intérêt à cause du mauvais jeu des acteurs. Un seul point positif : elle est diffusée tard dans la soirée.\n", + "mixed 0 vu le 1 er épisode,encore une super serie qui nous démontre que dans une certaine contrée , on aime pas le sexe, on s'en méfie, mais par contre, on est séduit par les serials killers, on voue un culte aux armes a feux, pour moi... ça va un peu! trés malsain\n", + "very_positive 0 Voulant me fier à la presse qui ne tarissait pas de critique élogieuses,je me suis donc branché samedi soir sur M.6.J'aurai du me casser une jambe!!!C'est la série fantastique la plus baroque et grotesque qu'il m'ai été donné de regarder.C'est bien simple,je n'ai pas pû aller au bout du 3eme épisode(il y en a6) tellement c'est risible.l'Esthetique est pas mal,mais elle mélange(mal)les genres en passant du registre de la science-fiction au polar.De plus,faut s'accrocher pour pas perdre le fil,et ces fameux objets certains ont des priorités ridicules comme le stylo tueur ou la montre qui peut cuire les oeufs.N'importe quoi!Une clé qui ne fait pas le bonheur,et pourtant,je suis plutôt client des ambiances bizarroÏdes.\n", + "mixed 0 Série moyenne, chirugie esthétique, ça remplace les chirurgiens en hopital, bientot, ils vont surement faire une série sur les dentistes ou sur les vétérinaires ? non sans rire !\n", + "mixed 0 Les experts est une série mettant en scéne des acteurs et actrices canons,tres intelligents, sur un scénario basique et plat qui se répete au fil des épisodes.En somme le schéma classique des séries policières americaine du moment, ennuyeux a mourir et connaissant un succé disproportionné.\n", + "mixed 1 Je ne comprends pas pourquoi tout le monde casse cette série, je la trouve super ! très amusante et j'ai le fous-rire à chaque épisode... bien sur comparé à \"caméra café\" ou \"Kaamelott\" y a rien a voir. Les acteurs sont parfaits dans leurs rôles et je suis déçu que la série soit déprogrammé... Convaincu ?\n", + "mixed 0 Encore une série linéaire : une personne ayant une maladie inconnue est internée. Dr. House cherche la solution, en choisit une (souvent au hasard ou selon l'intuition), il se plante, rectifie le tiret trouve la bonne solution grace à un infime détail que Dr.house avait occulté jusque là. Le malade est sauvé. Fin de l'épisode. Alors oui son personnage est détestable et certaines répliques sont géniales. Mais c'est trop répétitif : regardez un épisodes, vous les aurez tous vus !\n", + "negative 1 Ah le Docteur House... une serie qui m'a surpris par son theme pourtant usé et re-usé que sont les hopitaux, mais là il faut bien avouer que ça marche et tres bien d'ailleurs. Commencons pas les personnages, bien sûr House est un modele de cynisme, d'humour noir et provocant, l'archétype du vachard qu'on deteste et qu'on fini par adopté comme on adopte l'oncle acariatre, à qui on pardonne tout ; et que quelque soit les caprices, il aura gain de cause... mais cela serait reduire le personnage de House à un acariatre associal... qu'il est bien sûr !!! mais qu'il n'est pas seulement, il est intelligent (trop ?), il donne de lui à sa façon et il suffit de patienter pour voir toute la \"générosité\" de ce personnage. Je ris aux larmes (sincerement) à chacune de ses entourlopes et il arrive à me surprendre alors que l'on arrive à se persuader de l'avoir cerné... j'en suis à 55 épisodes et mon interet pour ce personnage est croissant... Mais la serie c'est aussi un panel de second roles tout aussi savoureux que House : Cuddy et Wilson sont de parfaits compagnons de House dans ses machinations et ses trois assistants de bons souffres douleur pour cet accro à la Vicodine... Enfin la structure de la serie est excellente, elle mele environnement medical et enquete scientifique dans un subtil melange d'Urgence, Les Experts, le ton décalé de Scrubs (House vs Cox qui gagne ?) ponctué par ses sceances de consultation à la clinique toutes aussi droles les unes que les autres... Il existe des arcs passionnants au fil des episodes qui doivent se voir dans l'ordre pour saisir toutes les subtilités de la serie. Bref un delice de suivre les aventures de House son equipe et son hopital... Bravo Bryan Singer de nous offrir un tel cocktail :-)\n", + "very_positive 0 Les Experts pouvait espérer figurer parmi les toutes meilleures séries il y a dix ans encore. Oui mais voilà, les scénarii sériels ont tellement progressé récemment, pour atteindre un niveau d'originalité et de mise en scène qui n'a rien à envier au cinéma (par ex. chez HBO: Six Feet Under, Sopranos, Carnivale ou Lost sur ABC), qu'ils font passer Les Experts pour un produit déjà-vu et suranné. Et même quand Q. Tarantino se retrouve aux commandes d'un double épisode, on a du mal à décoller de la simple série policière de base.\n", + "mixed 0 une série pour adolescent avant tout. pas mal de nullités: les histoires des adultes, la vie quotidienne des jeunes (fêtes, jeu vidéo, s'envoyer en l'air...) ,mais un bon fond: une relation seth/summer très attachante, un ryan attachant. comme ça la série est un petit divertissemet mais elle ne vaut pas des masses!\n", + "mixed 0 Pour ma part, je n'ai pas été vraiment convaincue par les deux premiers épisodes, j'attendais plus du créateur de Newport Beach, notamment un peu plus de \"cruel intentions\" plutôt que le monde de Bisounours. Je trouve le jeu des acteurs plutôt moyen entre une blonde qui sourit à chaque mot qu'on lui dit et un beau gosse riche aussi charismatique d'une limande. Je trouve les dialogues pas très bons, les intrigues senties à 10kms. La lutte manichéenne entre la gentille blonde (ah pardon elle est \"bad girl\") et la méchante brune a été vue 100 fois, je trouve que la série n'apporte aucune originalité mais heureusement la voix de Kristen Bell remonte un peu le niveau mais je pense qu'elle aurait pu espérer mieux comme rôle récurrent dans une série. Genre série ado, revoyez plutôt popular qui repasse tous les samedis sur France 4.Je pense qu'on est loin du niveau de Newport Beach voire même des Frères Scott que je n'aime pourtant pas vraiment. Cela me ferait vraiment mal si cette série durait plus longtemps que Veronica Mars.\n", + "positive 0 J'ai failli mettre une étoile parce que je me marre bien devant. Yves Rénier nous régale toujours de son jeu faux. Les scénarii sont quand à eux extraordinaire, extraordinaire dans le sens où c'est dur de faire plus stupide que ça. Bon au moins ça nous fait bien rire alors tout compte fait ne changez rien monsieur Rénier, j'aime bien être hilare de vos arrestations toujours plus débiles au fur et à mesure des années.\n", + "mixed 1 Les experts, c'est excellent, mais j'ai trouvé extrêmement nul l'adaptation française de cette série. Manhattan et miami ne valent pas las vegas. Grisom est le mieux de tous je trouve. Vive les experts.\n", + "positive 0 J'étais extrêmement réticente, je craignais que la série soit vulgaire, sexiste... J'ai un jour accroché à la première saison, j'avais fini par trouver qu'au delà des apparences il y avait une forte volonté de critique. Mais j'pense pas aller plus loin, ça finit par être trop n'importe quoi pour moi. Je lui laisse une étoile pour quelques bonnes choses, et notamment pour le personnage de Sean McNamara. Je ne pourrai pas faire plus.\n", + "mixed 1 Une bonne série TV, je l'ai suivie du début a la fin, mais le fait que les épisodes ne se suivent pas forcement et le fait que cette série ne dégage pas de charme particulier font que je ne met que 3 étoiles. Les épisodes sont toujours pareils : 1) On découvre le futur patient 2) Le Dr House fait ses consultations 3) On soigne le patient mais bien sur, le traitement choisi ne convient pas. Complications a chaque fois, etc. 4) Le Dr House, grace a la personne qu'il a consulté aupravant, trouve la solution a l'énigme. 5) Le patient est sauvé Un peu dommage. Série a regarder néanmoins, pour le personnage du Dr House\n", + "mixed 1 Faut-il avoir un petit instinc sadique pour regarder cet série ? Evidemment ! Sinon on ne pourrai pas l'aprécié à sa juste valeur :-) Enfin une sérié médicale interessante ... Enfin une série d'un cynisme sans pareil ... Enfin un sadique a qui on donne \"presque\" raison :-) Cet série à quelque chose de nouveau qui donne au file des épisodes l'envie d'en regarder un autre ! Le fais que les histoires personnels des uns et des autres sont aussi au coeur de chaque histoire encourage d'autant plus a suivre le cours des évenements ... Et je pense que ce n'est qu'un début , ayant vu quelque episode en anglais de la saison 3 , cet saison s'annonce d'autant plus interessante qu'un evenement intrigant arrive au Dr House :D (mais chut ;)) Si vous ne connaissez pas encore cet série , que vous aimez l'humoir un peu noir et le cynisme sans pareil , cet série est pour vous :-) Le mot de la fin : J'aimerai bien épousé Cameron :)\n", + "negative 1 Tombée par hasard sur cette série la semaine dernière (le 22.09.07)j'aurais aimé en savoir plus et regarder d'autres épisodes; Mais j'entend à la pubTV que samedi 29, c'est les derniers épisodes ...domages! :( Pourquoi cela n'a-t-il pas duré plus lontemps? Manque d'audimate? Pourtant, l'histoire des objets \"magique\" est vraiment prenante!! Je ne suis pas une enfant mais je me suis tout de même demandé \"et si c'était possible?!!\"\n", + "mixed 1 Très bonne série malgré le fait que les dialogues soient un peu compliqués à suivre. 3 étoiles car la fin m'a laissé un peu dubitatif !\n", + "negative 1 THRILLER DRAMATIQUE DECAPANT !!\n", + "positive 0 Une etoile et pas zero pourquoi ? Car l'environnement île/plage reste correct!\n", + "mixed 1 La saison mi 2-3 a été pour moi la meilleur de tous!Grace au découpeur et l'intrigue autour de lui et aux histoire qui suivent. G été un peu déçu par la saison 4.Par contre la saison 1 était médiocre car il y avait pas vraiment d'intrigue.\n", + "mixed 0 Et voici une série ayant pour base le voyage dans le temps. On revisite ainsi la petite comme la Grande Histoire des États-Unis à travers le personnage du Dr. Beckett et son inséparable compagnon Al. La série s'avère donc ludique et recèle d'un peu d'humour. Néanmoins, Code Quantum a pris un sacré coup de vieux, et touts les situations cocasses ne sont pas toujours très drôles, les acteurs font vraiment pitié par moment. La faute également à l'acteur principal Scott Bakula qui manque réellement de charisme et s'avère incapable de s'imposer, même s'il a le mérite de porter une série \"casse-gueule\" sur ses frêles épaules. Dans le même genre, mais infiniment plus réussit, regarder la cultissime trilogie Retour vers le Futur.\n", + "very_positive 0 Rares sont les séries de ce genre qui me plaisent, c'est mon père qui adore cette série.\n", + "mixed 1 Y a pas mieux. J'ai été obligé de me relever pour continuer à regarder des épisodes.\n", + "mixed 1 Je n'arrive pas à concevoir qu'on puisse juger cette série comme \" une simple série de chirurgien esthétique\". Je plains les gens qui pensent cela Nip/Tuck ce n'est pas seulement sexe drogue et chirurgie, c'est aussi une série riche en émotion. Voilà ce que je dirais c'est que certes cette série peut sembler obscène et bête au premier abords, mais il faut passer outre cette aspect. Car derriere on trouve tout les éléments clés d'une série a succés : une musique incroyable ( avec des artistes comme rufus wainwright, the engine Room...) qui colle parfaitement à l'esprit de la série, ainsi qu'une intense émotion vis à vis des personnages confrontés à des situations les unes plus touchantes que les autres. Comment ne pas s'émouvoir devant une série qui en nous montrant une opération de chirurgie esthétique, nous fait ressentir une forte intensité poétique. Ne passez pas à coté, cette série dérangeante est en meme temps la plus touchante de cette année.\n", + "mixed 0 J'ai lu dans les critiques précédentes qu'il fallait passer le cap des 4 premiers épisodes pour apprécier cette série. Terminer le premier a été suffisamment douloureux pour moi alors non merci... Qu'en dire... Dirt se veux être une critique du monde de la presse people, mais je ne vois qu'une succession de clichés servis par une Courteney Cox Botoxée et des seconds rôles insipides...\n", + "mixed 1 Fan de la premiere heure, je regrette juste les effets spéciaux qui ne sont pas crédibles\n", + "mixed 0 Dommage que l'on ne puisse pas mettre des moins 2 étoiles car cette série est vraiment trop nulle. Les acteurs sont convaincants comme des tortues de mer, l'histoire... Elle me rappelle une série espagnole... Trop nulle, zappez de suite cette série!\n", + "mixed 0 Une entrée en fanfare avec une superbe saison 1...mais alors quelle décrépitude depuis...c'est très très dommage!\n", + "mixed 0 Bonne serie policiere mais apres tant d'épisodes ils ont du mal a se renouveler.\n", + "positive 0 Cette série est le véhicule des idées puritaines et conservatrices de l'amérique qui offre le temps de chaque épisode, un regard moralisateur sur tous les possibles écarts de ces jeunes bourgeois de haute catégorie. On dirait JAG, les uniformes et l'action en moins.\n", + "mixed 1 Non fan de série mais celle-ci est vraiment sympathique. Dotée d'un humour presque gamin ou gras, la justesse de jeu des acteurs parvient à nous faire rire de blagues parfois même pas drôles. Situations cocasses et personnages attachants, cette série a tout pour plaire et passer simplement un bon moment, en effet, aucun style, rien de bien alléchant pour l'oeil, le tout vise la détente et la bonne humeur.\n", + "very_positive 0 Les experts MIAMI, les experts Manhattant, les experts las Vegas... Bientôt sur vos écrans : Les experts TOMBOUCTOU ! Non mais faut arrêter de nous prendre pour des cruches aussi...Pfff C'est d'un débile...\n", + "very_positive 0 Pour ceux qui veulent savoir, nip tuck c'est des chirurgiens, éffectuant des chirurgie, voila, vous avez vus ses trés trés original, non ?\n", + "mixed 0 Je lis partout que cette série est \"ironique\" et \"critique la société américaine\". Je suis désolée mais quand je la regarde je ne vois pas du tout d'ironie. C'est du feu de l'amour pour les ados ! Les acteurs jouent des lycéens, mais a part Mischa Barton ils ont tous la vingtaine (Benjamin McKenzie a 27 ans si je ne me trompe pas). Les parents ont l'air tellement jeunes qu'ils ont surement dut avoir leurs gosses à 15 ans ! Ca me fais penser aux frères scott, une autre série pas très haute dans mon estime.\n", + "mixed 1 Une programmation initiale qui aurait pu tuer cette série dans l'oeuf dans notre pays. Mais rien ne peut tuer la qualité dit-on... CSI en est l'exemple. Fan depuis la première heure, je suis étonnée de la constance de cette série qui au bout de 7 ans maintenant, a su garder sa ligne directrice et n'est pas tombée dans le \"sopori-soap\" (i.e. les personnages finissent toujours par coucher les uns avec les autres...). Le succès fût tel, qu'elle a fait des petits (versions Miami et Manhattan) mais qui n'ont pour le moment pas réussi à atteindre sa qualité.\n", + "mixed 0 Bonjour, Je me désole chaque fois, davantage en voyant les séries américaines de plus en plus sombre. Une personne \"équilibré\" ne voit surement pas le mal dans les sénarios des Experts, mais certaines individus peuvent prendre ces séries pour modèles et en souffrir. Il y a trop de séries policières ou l'on voit meurtre, sang, armes à feu Trop de violences... Je ne recherche pas une télé ou casimir serait roi mais un certain équilibre dans les programes. Merci\n", + "very_negative 1 C'est qui notre sociopathe préféré ... DEXTER ... Cette serie est tout bonnement incroyable ... Il tue des gens et on approuve ... on a peur qu'il se fasse coincé ... detestons les gens qui le deteste ... prions pour qu'il tue le vilain flic qui risque de l'arrété ... on est du coté obscur et on le sens meme pas ... pour nous c' limit un super héro ... Dexter a reveillé le sociopathe qui someil en chacun de nous ... parie difficil mais parie tenue ... Seul défaut de cette serie ... elle n'est pas quotidienne :(\n", + "mixed 1 3 etoiles, car la série n'est pas parfaite. Je crois que c'est du au jeu d'acteur qui est parfois faible. Critique qui ne touche pas Michael C. Hall qui joue à la perfection. On voit que la série est réalisée avec soin (les décors, les dialogues...), car le grand risque était de tomber dans des lieux communs, et de traiter le thème avec banalité malgré l'originalité du scenario. D'autre part, je tiens à parler du générique et du thème de musique récurrent qui sont vraiment bien, dans le sens où le générique est juste, et le thème adéquat. Bref, c'est un grand moment de série télé, mais la prochaine saison va peut-être décevoir. Aux réalisateurs de ne pas donner dans les sentiers battus ! Comme d'habitude, je m'insurge contre les chaines françaises qui ne donnent pas dans la vo sous-titrée. Car la voix, fait partie du jeu d'acteur, et en plus il y'a certaines répliques jeux de mots, etc qui peuvent nous échapper. (Imaginons un film français doublé en anglais !) Heureusement pour Dexter que cette série est diffusée sur canal, car sur tf1 cela eut été insupportable (diffusions à minuit, hachée de pubs...)\n", + "mixed 1 J'étais un peu réticent lorsque l'on m'a demandé de regarder un épisode. Je m'attendais encore à une série d'hôpital sans originalité, en reprenant ce qui existe déjà. Et bien pas du tout, j'ai été rapidement attiré par l'humour décalé, ironique voire sarccastique de cette série.C'est une série originale qui se laisse regarder tranquilement dans son canapé !\n", + "mixed 1 serie ENORME rien à dire, quand on connait pas on peut ce dire bof des chirurgiens on va voir que des opérations mais rien d'autre en ben non ceux qui disent ça je leurs conseille de regarder au moins un episode pour ce rendre compte que ce n'est pas du tout ce qu'ils croient certes il y a des opération, c'est bien normal mais il y a un paquets d'histoires et de rebondissements c'est ce qui fait de nip tuck une serie culte!!\n", + "mixed 0 Série des plus moyenne, dans le genre il y a beaucoup mieux. Et la vf n'est pas des plus réussie.\n", + "mixed 0 Sujet niais pour serie niaise.\n", + "mixed 0 Une série bien lourde. Un policier qui devrait penser à la retraite, il n'est plus vraiment dans le coup.\n", + "positive 0 Une idée de départ intéressante, mais qui tourne rapidement en rond. Par contre Michael Hall est vraiment très impressionnant, tout comme Jennifer Carpenter qui confirme après \"L'exorcisme d'Emily Rose\".\n", + "positive 0 J'ai adoré l'idée, l'histoire qu'elle a voulu conter... seulement, du fait qu'elle ait été arrêtée si tôt, le tout est vite parti de travers, ne laissant qu'une des 4 étoiles que je voulais lui mettre...dommage...\n", + "mixed 0 Etant alité pour cause de maladie j'ai dernièrement eu l'occasion de regarder la saison 1 de la série Newport Beach et je dois dire que j'ai été déçue. En effet, j'ai trouvé les personnages extrêmement lisses et stéréotypés, les histoires pourraient être intéressantes mais on tombe vite dans des schémas bien établis où tout finit bien à la fin. Bref, une série pour ados comme on en voit plein. Le seul plus c'est le personnage de Seth qui est mignon et attachant. Malheureusement, pour moi ce ne sera pas suffisant pour m'atteler à regarder les saisons suivantes.\n", + "mixed 0 La construction de l'\"histoire\" repose sur une question, à laquelle les scénaristes doivent constamment répondre: comment faire à la fois plus choquant à chaque épisode que ce qui fut montré lors de l'épisode précédent tout en étant politiquement correct? L'intérêt que les gens portent à cette série est très probablement lié en grande partie à des tendances voyeuristes, qui sont probablement en chacun de nous. Bref, pour ceux qui aiment le sang et le sexe, regardez Rome, car au moins c'est instructif.\n", + "mixed 1 très bonne série car pariculierement insicive mais je trouve qu'au fil des saisons ils tournent un peu en rond. Il faudra qu'ils s'arretent sinon son originalité deviendra banalité.\n", + "mixed 0 Je hais \"Les Experts\", je préfère de loin \"Les Expert: Manhattan\", toujours aussi mauvais que Miami, quand on voit un épisode de la saison 1, on n'en retrouve un a peu près identique a la saison 2 et ainsi de suite, je trouve que les acteurs ne sont pas en haut de leur forme, les enquêtes sont prévisible ( a certain épisode), je n'ai jamais vu ca c'est nul, mais je dirai moins nul quand même que Les Experts: Miami.\n", + "mixed 0 Les tribulations de quelques gosses issues de la haute société américaine plus celles du beau gosse issue des milieux populaires dont s'entichera la fille à papa un peu BCBG, histoire de bien nous montrer que les barrières sociales n'existent pas, même au pays de l'oncle Sam. Quatres étoiles pour ceux qui rafolent de ce genre de niaiserie, les autres passeront évidement leur chemin.\n", + "positive 0 Voici la série qui faisait découvrir aux beaufs de l'autre côté de l'Atlantique, ce que nous appelons en France la Police Judiciaire. Des équipes d'\"experts\" (ils sont allés cherchez loin le titre français) vont donc décortiquer les différents prélèvements sur les scènes des crimes, échafaudez des théories et coincez les coupables avant la fin de la journée. Bien sûr, dès qu'un élément médico-légal contredit l'hypothèse la plus probable, nos spécialistes vont creusez un peu plus et finiront par trouver la faille dans la version des faits des suspects et les bouclerons. Les créateurs de la série ajouterons leur petites morales d'épisodes, avec la mère de famille prévenante, le black de service au lourd passé, la petite nouvelle nénette, l'inspecteur fraîchement promu qui se la pète un peu, et le patron qui finit toujours ses missions. J'avoue avoir du mal à trouver un intérêt à d'aussi \"passionnantes\" enquêtes, des personnages à la psychologie si peu travaillée, l'absence de difficultés dans la tâche des enquêteurs, et le côté 'pré-mâché' de la série. Cela passe sûrement bien en seconde partie de soirée...\n", + "mixed 1 SI VOUS VOULEZ VOIRE UNE SERIE POLICIERE QUI FONCTIONE A LA FOIS DE MANIERE CLASSIC ET ORIGINALE .ALORS IL FAUT LA REGARDER .LE PRINCIPE EST SIMPLE LE TRAVAIL DE POLICE SCIENTIFIQUE EST LE DERNIERS RECOURS DES VICTIMES.LES INTERPRETES Y SONT EXCELENT.LAISSEZ VOUS ATTIRE PAR CETTE SERIE.\n", + "positive 0 Bon alors la c'est une énorme déception. La façon dont sont représenté les personnage en leur donnant des caractères un peu fou s'est bien épuisé depuis Ally McBeal. Sans parlé des nombreuses affaires que ses avocats mannequins, défendent, qui sont toutes plus débiles et improbables les unes que les autres. Je le répète on est bien loin du cabinet fou d'Ally McBeal et la ou Ally innovait, Boston Legale, en fait trop et s'enfonce. Je met quand même une étoile car je suis sur qu'en VO le jeu des comédiens est excellent.\n", + "mixed 0 bon j'ai regardé d'autre épisodes de nip tuck comme je l'avait promis et je reste sur ma premiére opinion, rien d'original, les acteurs et les scénario n'en parlons pas.\n", + "positive 0 Les acteurs sont convaincants comme des mouches, l'histoire... Elle me rappelle une série espagnole nommée \"Un, dos, tres\"... Trop nulle, zappez de suite cette série!\n", + "mixed 0 J'ai vu les 3 épisodes (c'est à dire toute la série) : rien d'exceptionnel, une série gentille, qui rappelle un peu trop Heroes. Le scénario, qui s'annonçait prommetteur, est au final décevant. Le jeu d'acteur est trop convenu, trop classique. Ça sent un peu le réchauffé. Dommage.\n", + "mixed 0 Non mais franchement, c'est quoi cette série? Pour mettre 4 étoiles il faut vraiment n'avoir jamais regardé de bonne série! Les acteurs ils ont dû les trouver dans une pochette surprise, j'ai trop honte pour eux! Et le scénario, il est complètement débile, regardez de meilleures séries du genre The OC, One Tree Hill, Lost, ou même Dawson! C'est dix fois mieux! Ne perdez pas votre temps sur cette série.\n", + "negative 1 je commence a detestetr marissa. alor ke ryan fai tt pr ke sa aille bien entre eu, il fo tjs kel gach tt.el fai tt pr le fer rester, el le capte a peine. je le plin le povre, mé joré pa pensé kil orai fai marissa mourir, sa ma fai vrèmen chier pr ryan, kar il ete vrèmen triste. enfin bref, moi jèmè bien les voir ensemble, ils étai mimi. mé tte bne choz a une une fin. je ss bien contente pr seth et summer kan ils vt se marier, mé par ctre, taylor et ryan?? jimajinai tt, mé pa du tt sa.la vi ns reserv bien d surpriz !!\n", + "positive 0 Je suis une fan de la série Les Experts et de ses spin-off. Je trouve le principe de montrer le côté scientifique des enquêtes policières très intéressant. Les personnages sont très attachants, même si la série est axée principalement sur les enquêtes et non sur la vie des personnages. On en sait suffisamment pour les comprendre. Cependant je trouve dommage que les épisodes ne soient pas diffusés dans l'ordre... Ca enlève un peu de cachet...\n", + "mixed 0 & Allons bon... Commissaire Valence... Commissaire Moulin... Commissaire Cordier...... Ben voyons !!! & Le pire c'est que c'est encore en production !!!!\n", + "positive 0 Une série qui atteint le summum de la bêtise! L'acteur principal est juste détestable au point que la série est éclipsée par son jeu des plus mauvais! En fait, pour ma part, si le personnage principal avait été un peu moins dans la caricature du méchant-docteur-qui-au-fond-est-un-génie, peut-être que cette soupe immonde aurait eu meilleur gout! Mais bon, tous les gouts sont dans la nature! :)\n", + "very_positive 0 je trouve cette série géniale on se met facilement dans la peau des personnages on recent bien les émotions bref j'ador cette série. vivement la saison 2. ju\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# 2- Transfert / fine-tuning : analyse de sentiment\n", + "\n", + "Dans cette partie, nous allons fine-tuner / affiner un modèle de langue pré-entraîné (agnostique) pour l'adapter à la tâche d'analyse de sentiment.\n", + "\n", + "On travaillera sur des données en anglais (corpus IMDb, que l'on peut directement charger depuis HuggingFace)." + ], + "metadata": { + "id": "HUx1kHH8eUjE" + } + }, + { + "cell_type": "markdown", + "source": [ + "### 2-1 Charger un modèle pré-entraîné : DistilBERT\n", + "\n", + "Ici on ne va pas passer par la pipeline, pour pouvoir plus simplement gérer les éléments du modèle : le modèle et le tokenizer associé.\n", + "\n", + "On utilise ici le modèle DistilBERT, une version plus petite et rapide du modèle transformer BERT.\n", + "\n", + "Plus d'info ici: https://huggingface.co/distilbert-base-uncased.\n" + ], + "metadata": { + "id": "c40x3RDbB3Qo" + } + }, + { + "cell_type": "code", + "source": [ + "# Chosing the pre-trained model\n", + "# - distilBERT: specific, faster and lighter version of BERT\n", + "# - base vs large\n", + "# - uncased: ignore upper case\n", + "base_model = \"distilbert-base-uncased\"" + ], + "metadata": { + "id": "UtdppwkoB3Qp" + }, + "execution_count": 13, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### 2-2 Tokenizer\n", + "\n", + "Définir un tokenizer et un modèle associés au modèle pré-entraîné DistilBERT." + ], + "metadata": { + "id": "NUus9JUNB3Qq" + } + }, + { + "cell_type": "markdown", + "source": [ + "-------------------\n", + "SOLUTION\n" + ], + "metadata": { + "id": "xq9sUFYg9Wd7" + } + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2fa39c65-83d2-4531-ba72-0fa8432e4041", + "id": "9XwH5If4B3Qq" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Some weights of DistilBertForSequenceClassification were not initialized from the model checkpoint at distilbert-base-uncased and are newly initialized: ['classifier.bias', 'classifier.weight', 'pre_classifier.bias', 'pre_classifier.weight']\n", + "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n" + ] + } + ], + "source": [ + "# Defining the tokenizer using Auto Classes\n", + "tokenizer = AutoTokenizer.from_pretrained(base_model)\n", + "model = AutoModelForSequenceClassification.from_pretrained(base_model)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 2-3 ▶▶ Exercise: Load new data for transfer\n", + "\n", + "Charger l'ensemble de données IMDB qui correspond à de l'analyse de sentiment sur des reviews de films (en anglais).\n", + "On va utiliser ces données pour affiner notre modèle pré-entraîné (agnostique) sur la tâche d'analyse de sentiments." + ], + "metadata": { + "id": "8lt8MjqYIZCl" + } + }, + { + "cell_type": "markdown", + "source": [ + "---------------\n", + "SOLUTION" + ], + "metadata": { + "id": "yamXvQ3q9mbQ" + } + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "Xndj4mU-Ib8Q" + }, + "outputs": [], + "source": [ + "dataset = load_dataset(\"imdb\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "b5d80087-0640-4b27-8ded-01e569cc0212", + "id": "C6LVL237Ib8R" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DatasetDict({\n", + " train: Dataset({\n", + " features: ['text', 'label'],\n", + " num_rows: 25000\n", + " })\n", + " test: Dataset({\n", + " features: ['text', 'label'],\n", + " num_rows: 25000\n", + " })\n", + " unsupervised: Dataset({\n", + " features: ['text', 'label'],\n", + " num_rows: 50000\n", + " })\n", + "})" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ], + "source": [ + "dataset" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 2-4 Tokenization des données\n", + "\n", + "Le code ci-dessous permet d'obtenir une version tokenisée du corpus." + ], + "metadata": { + "id": "SbjUad2-tecl" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### ▶▶ Exercice Tokenisation :\n", + "\n", + "Regardez la doc pour vérifier que vous comprenez la fonction des paramètres utilisées : https://huggingface.co/docs/transformers/v4.25.1/en/main_classes/tokenizer#transformers.PreTrainedTokenizer.\n", + "\n", + "- à quoi sert le padding ?\n", + "- à quoi correspond le paramètre 'truncation' ?\n", + "\n", + "Note: pour plus de détails sur la fonction *Map()* https://huggingface.co/docs/datasets/process et aussi https://huggingface.co/docs/datasets/v2.7.1/en/package_reference/main_classes#datasets.Dataset.map" + ], + "metadata": { + "id": "HY-5WQapfCTV" + } + }, + { + "cell_type": "markdown", + "source": [ + "------------\n", + "SOLUTION\n", + "\n", + "- *padding (bool, str or PaddingStrategy, optional, defaults to False)* — Activates and controls padding. 'max_length': Pad to a maximum length specified with the argument max_length or to the maximum acceptable input length for the model if that argument is not provided.\n", + "- *truncation (bool, str or TruncationStrategy, optional, defaults to False)* — Activates and controls truncation. True or 'longest_first': Truncate to a maximum length specified with the argument max_length or to the maximum acceptable input length for the model if that argument is not provided. This will truncate token by token, removing a token from the longest sequence in the pair if a pair of sequences (or a batch of pairs) is provided." + ], + "metadata": { + "id": "2irkWDLEuSTp" + } + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "-Kj0bW3_50et", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 49, + "referenced_widgets": [ + "c6e23151ae944eecb8984e4b1a39cd2f", + "0ef4673e9bc847cf9477a54e4f161fce", + "402a4a8cd9fd44cea9565b83c552f9bd", + "7de702593b5c4808a9a5777345df5fae", + "b06a8dbd3c234e3bacc87016dbc3f64b", + "46b099d47d9f407e8375a5ad52bf3843", + "d9bfaae50ae5428b91fdd46544a315ba", + "a5d74c23e4494f798d656bfa80862854", + "4689217815ef4a31baacd665c4ac6c43", + "1bcf826b8a434c9e89a720206d1dc979", + "a7a988d41c6f4bf59d564e9ccd4d1356" + ] + }, + "outputId": "409b024c-8ff4-4f88-c3de-7d33984cf219" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Map: 0%| | 0/25000 [00:00<?, ? examples/s]" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "c6e23151ae944eecb8984e4b1a39cd2f" + } + }, + "metadata": {} + } + ], + "source": [ + "def tokenize_function(examples):\n", + " return tokenizer(examples[\"text\"], padding=\"max_length\", truncation=True)\n", + "\n", + "\n", + "tokenized_datasets = dataset.map(tokenize_function, batched=True)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Notez que le tokenizer retourne deux éléments:\n", + "\n", + "- input_ids: the numbers representing the tokens in the text.\n", + "- attention_mask: indicates whether a token should be masked or not.\n", + "\n", + "Plus d'info sur les datasets: https://huggingface.co/docs/datasets/use_dataset" + ], + "metadata": { + "id": "ATFZVbiYwD34" + } + }, + { + "cell_type": "code", + "source": [ + "tokenized_datasets" + ], + "metadata": { + "id": "TKTi2eO8d-JJ", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "8ebcc86d-6cd6-4907-bd67-a7b1df5083f7" + }, + "execution_count": 18, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DatasetDict({\n", + " train: Dataset({\n", + " features: ['text', 'label', 'input_ids', 'attention_mask'],\n", + " num_rows: 25000\n", + " })\n", + " test: Dataset({\n", + " features: ['text', 'label', 'input_ids', 'attention_mask'],\n", + " num_rows: 25000\n", + " })\n", + " unsupervised: Dataset({\n", + " features: ['text', 'label', 'input_ids', 'attention_mask'],\n", + " num_rows: 50000\n", + " })\n", + "})" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## 2-5 Entraînement / Fine-tuning\n", + "\n", + "Pour l'entraînement du modèle, on définit d'abord\n", + "- une configuration via la classe *TrainingArguments*.\n", + "- un niveau de 'verbosité'\n", + "- une métrique d'évaluation" + ], + "metadata": { + "id": "HYws35k8xCq0" + } + }, + { + "cell_type": "code", + "source": [ + "from transformers import TrainingArguments, Trainer\n", + "training_args = TrainingArguments(output_dir=\"test_trainer\",\n", + " no_cuda=False, # sur ordi perso sans bon GPU\n", + " per_device_train_batch_size=4,\n", + " #evaluation_strategy=\"steps\",\n", + " #eval_steps=100,\n", + " num_train_epochs=5,\n", + " do_eval=True,\n", + " report_to=\"none\")" + ], + "metadata": { + "id": "uLVIKxZcgOpb" + }, + "execution_count": 33, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "id": "JUtftrdy50ev" + }, + "outputs": [], + "source": [ + "from transformers.utils import logging\n", + "\n", + "logging.set_verbosity_error()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "id": "F8O_Jmcx50ew" + }, + "outputs": [], + "source": [ + "metric = evaluate.load(\"accuracy\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "id": "UZk65ZKH50ew" + }, + "outputs": [], + "source": [ + "def compute_metrics(eval_pred):\n", + " logits, labels = eval_pred\n", + " predictions = np.argmax(logits, axis=-1)\n", + " return metric.compute(predictions=predictions, references=labels)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Trainer\n", + "\n", + "Une instance de la classe *Trainer* correspond à une boucle d'entraînement classique, basée sur les éléments définis précédemment.\n", + "\n", + "https://huggingface.co/docs/transformers/main_classes/trainer" + ], + "metadata": { + "id": "8FEJYEhDxoCp" + } + }, + { + "cell_type": "markdown", + "source": [ + "On va sélectionner un sous-ensemble des données ici, pour que l'entraînement soit un peu moins long." + ], + "metadata": { + "id": "4QUvGEbOvRTH" + } + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "id": "Dgfoqbx950eu" + }, + "outputs": [], + "source": [ + "small_train_dataset = tokenized_datasets[\"train\"].shuffle(seed=42).select(range(1000))\n", + "small_eval_dataset = tokenized_datasets[\"test\"].shuffle(seed=42).select(range(100))" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "id": "uX2nBPnk50ew" + }, + "outputs": [], + "source": [ + "trainer = Trainer(\n", + " model=model,\n", + " args=training_args,\n", + " train_dataset=small_train_dataset,\n", + " eval_dataset=small_eval_dataset,\n", + " compute_metrics=compute_metrics,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Lancer l'entraînement\n", + "\n", + "Et on peut lancer l'entraînement en utilisant la méthode *train()*." + ], + "metadata": { + "id": "GhGLiCEVx-8v" + } + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "id": "IN58_eaV50ex", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "47b046e0-55ad-4006-9801-706cc24de797" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'loss': 0.5194, 'grad_norm': 6.9557623863220215, 'learning_rate': 3e-05, 'epoch': 2.0}\n", + "{'loss': 0.1788, 'grad_norm': 0.034018032252788544, 'learning_rate': 1e-05, 'epoch': 4.0}\n", + "{'train_runtime': 279.6493, 'train_samples_per_second': 17.88, 'train_steps_per_second': 4.47, 'train_loss': 0.2875509811401367, 'epoch': 5.0}\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "TrainOutput(global_step=1250, training_loss=0.2875509811401367, metrics={'train_runtime': 279.6493, 'train_samples_per_second': 17.88, 'train_steps_per_second': 4.47, 'train_loss': 0.2875509811401367, 'epoch': 5.0})" + ] + }, + "metadata": {}, + "execution_count": 39 + } + ], + "source": [ + "import os\n", + "trainer.train( )" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## 2-6 Evaluation" + ], + "metadata": { + "id": "MgJpr49WySMd" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### Evaluation sur un exemple\n", + "\n", + "On teste le modèle sur un exemple de l'ensemble d'évaluation." + ], + "metadata": { + "id": "2bE7kBlEH4es" + } + }, + { + "cell_type": "code", + "source": [ + "ex_eval = small_eval_dataset[1][\"text\"]\n", + "input = tokenizer(ex_eval, return_tensors=\"pt\")\n", + "input_ids = input.input_ids.to(\"cuda\")\n", + "print(input_ids.shape)\n", + "output = model(input_ids)\n", + "\n", + "print(\"gold\", small_eval_dataset[1][\"label\"])\n", + "\n", + "print(output)" + ], + "metadata": { + "id": "uyky-X_bzGpS", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ad04a7ae-dd79-47f9-fc58-1ea33f898bbc" + }, + "execution_count": 40, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "torch.Size([1, 240])\n", + "gold 1\n", + "SequenceClassifierOutput(loss=None, logits=tensor([[-3.7696, 2.7256]], device='cuda:0', grad_fn=<AddmmBackward0>), hidden_states=None, attentions=None)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "output[\"logits\"]" + ], + "metadata": { + "id": "JDcpli3k2d_f", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "20c08bdc-424d-41e4-e255-c1405b78b76d" + }, + "execution_count": 41, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tensor([[-3.7696, 2.7256]], device='cuda:0', grad_fn=<AddmmBackward0>)" + ] + }, + "metadata": {}, + "execution_count": 41 + } + ] + }, + { + "cell_type": "code", + "source": [ + "pred = np.argmax(output[\"logits\"].cpu().detach().numpy(), axis=-1)\n", + "print(\"Pred\", pred)" + ], + "metadata": { + "id": "3DeTwx2oz-Ek", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "1aac6267-0048-4f75-97e8-e4a09977f5a1" + }, + "execution_count": 42, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Pred [1]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(tokenizer.tokenize(ex_eval))" + ], + "metadata": { + "id": "HsgQ6Ekd21IP", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "9a63a047-f16a-43b7-fb26-ca46cefeb012" + }, + "execution_count": 43, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "['this', 'is', 'the', 'latest', 'entry', 'in', 'the', 'long', 'series', 'of', 'films', 'with', 'the', 'french', 'agent', ',', 'o', '.', 's', '.', 's', '.', '117', '(', 'the', 'french', 'answer', 'to', 'james', 'bond', ')', '.', 'the', 'series', 'was', 'launched', 'in', 'the', 'early', '1950', \"'\", 's', ',', 'and', 'spawned', 'at', 'least', 'eight', 'films', '(', 'none', 'of', 'which', 'was', 'ever', 'released', 'in', 'the', 'u', '.', 's', '.', ')', '.', \"'\", 'o', '.', 's', '.', 's', '.', '117', ':', 'cairo', ',', 'nest', 'of', 'spies', \"'\", 'is', 'a', 'bree', '##zy', 'little', 'comedy', 'that', 'should', 'not', '.', '.', '.', 'repeat', 'not', ',', 'be', 'taken', 'too', 'seriously', '.', 'our', 'protagonist', 'finds', 'himself', 'in', 'the', 'middle', 'of', 'a', 'spy', 'chase', 'in', 'egypt', '(', 'with', 'mor', '##ro', '##co', 'doing', 'stand', 'in', 'for', 'egypt', ')', 'to', 'find', 'out', 'about', 'a', 'long', 'lost', 'friend', '.', 'what', 'follows', 'is', 'the', 'standard', 'james', 'bond', '/', 'inspector', 'cl', '##ous', '##so', '##u', 'kind', 'of', 'antics', '.', 'although', 'our', 'man', 'is', 'something', 'of', 'an', 'over', '##t', 'x', '##eno', '##ph', '##obe', ',', 'sex', '##ist', ',', 'homo', '##ph', '##obe', ',', 'it', \"'\", 's', 'treated', 'as', 'pure', 'far', '##ce', '(', 'as', 'i', 'said', ',', 'don', \"'\", 't', 'take', 'it', 'too', 'seriously', ')', '.', 'although', 'there', 'is', 'a', 'bit', 'of', 'rough', 'language', '&', 'cartoon', 'violence', ',', 'it', \"'\", 's', 'basically', 'okay', 'for', 'older', 'kids', '(', 'ages', '12', '&', 'up', ')', '.', 'as', 'previously', 'stated', 'in', 'the', 'subject', 'line', ',', 'just', 'sit', 'back', ',', 'pass', 'the', 'popcorn', '&', 'just', 'enjoy', '.']\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### ▶▶ Exercice : Analyse d'erreurs\n", + "\n", + "Affichez les exemples sur lesquels le modèle a fait une erreur de prédiction.\n", + "Pour chaque exemple, affichez le label gold, le label prédit et le texte de l'exemple correspondant.\n", + "\n", + "\n", + "Note: aidez vous de la doc de Trainer https://huggingface.co/docs/transformers/main_classes/trainer#transformers.Trainer\n", + "\n" + ], + "metadata": { + "id": "A-cx4sdZGcz2" + } + }, + { + "cell_type": "code", + "source": [ + "# --- correction\n", + "if training_args.do_eval:\n", + " prob_labels,_,_ = trainer.predict( test_dataset=small_eval_dataset)\n", + " pred_labels = [ np.argmax(logits, axis=-1) for logits in prob_labels ]\n", + " #print( pred_labels)\n", + " gold_labels = [ inst[\"label\"] for inst in small_eval_dataset]\n", + "\n", + " for i in range( len( small_eval_dataset ) ):\n", + " ## -- Print pred, gold\n", + " #print(pred_labels[i], gold_labels[i])\n", + " if pred_labels[i] != gold_labels[i]:\n", + " print(i, gold_labels[i], pred_labels[i], small_eval_dataset[i][\"text\"] )" + ], + "metadata": { + "id": "L9phpmPnII-O", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "1c267460-c312-438b-8657-b80ef35c906f" + }, + "execution_count": 44, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "14 1 0 Dirty Harry goes to Atlanta is what Burt called this fantastic, first-rate detective thriller that borrows some of its plot from the venerable Dana Andrews movie \"Laura.\" Not only does Burt Reynolds star in this superb saga but he also helmed it and he doesn't make a single mistake either staging the action or with his casting of characters. Not a bad performance in the movie and Reynolds does an outstanding job of directing it. Henry Silva is truly icy as a hit-man.<br /><br />Detective Tom Sharky (Burt Reynolds) is on a narcotics case in underground Atlanta when everything goes wrong. He winds up chasing a suspect and shooting it out with the gunman on a bus. During the melee, an innocent bystander dies. John Woo's \"The Killer\" replicates this scene. Anyway, the Atlanta Police Department busts Burt down to Vice and he takes orders from a new boss, Frisco (Charles Durning of \"Oh, Brother, Where Art Thou?\") in the basement. Sharky winds up in a real cesspool of crime. Sharky and his fellow detectives Arch (Bernie Casey) and Papa (Brian Keith) set up surveillance on a high-priced call girl Dominoe (Rachel Ward of \"After Dark, My Sweet\")who has a luxurious apartment that she shares with another girl.<br /><br />Dominoe is seeing a local politician Hotchkins (Earl Holliman of \"Police Woman\") on the side who is campaigning for governor but the chief villain, Victor (Vittorio Gassman of \"The Dirty Game\") wants him to end the affair. Hotchkins is reluctant to accommodate Victor, so Victor has cocaine snorting Billy Score (Henry Silva of \"Wipeout\")terminate Dominoe. Billy blasts a hole the size of a twelve inch pizza in the door of Dominoe's apartment and kills her.<br /><br />Sharky has done the unthinkable. During the surveillance, he has grown fond of Dominoe to the point that he becomes hopelessly infatuated with her. Sharky's mission in life now is to bust Victor, but he learns that Victor has an informant inside the Atlanta Police Department. The plot really heats up when Sharky discovers later that Billy shot the wrong girl and that Dominoe is still alive! Sharky takes her into protective custody and things grow even more complicated. He assembles his \"Machine\" of the title to deal with Victor and his hoods.<br /><br />William Fraker's widescreen lensing of the action is immaculate. Unfortunately, this vastly underrated classic is available only as a full-frame film. Fraker definitely contributes to the atmosphere of the picture, especially during the mutilation scene on the boat when the villain's cut off one of Sharky's fingers. This is a rather gruesome scene.<br /><br />Burt never made a movie that surpassed \"Sharky's Machine.\"\n", + "21 0 1 Coming from Kiarostami, this art-house visual and sound exposition is a surprise. For a director known for his narratives and keen observation of humans, especially children, this excursion into minimalist cinematography begs for questions: Why did he do it? Was it to keep him busy during a vacation at the shore? <br /><br />\"Five, 5 Long Takes\" consists of, you guessed it, five long takes. They are (the title names are my own and the times approximate): <br /><br />\"Driftwood and waves\". The camera stands nearly still looking at a small piece of driftwood as it gets moved around by small waves splashing on a beach. Ten minutes.<br /><br />\"Watching people on the boardwalk\". The camera stands still looking at the ocean horizon and a boardwalk. People walk across the camera frame, their faces too far and blurry to make them interesting. Eleven minutes.<br /><br />\"Six dogs at the water's edge\". The camera stands still looking at the ocean horizon with a sandy stretch of beach nearby. Far away at the water's edge, six dogs not doing much, just relaxing. Sixteen minutes.<br /><br />\"Ducks in line, gaggle of ducks\". The camera stands still looking at the ocean horizon near the water's edge. Dozen and dozen of ducks stream in single file from left to right. I assume that Kiarostami released them gradually. The last two ducks stop dead on their track and suddenly a gaggle of ducks rolls quietly from right to left. I assume Kiarostami collected the ducks and re-released all at the same time. It is not the first time that he deals with the contrast between organized and disorganized behavior. Eight minutes.<br /><br />\"Frog symphony, oops, I mean cacophony, for a stormy night\". The camera stands over a pond at night. It's pitch black except for what appears to be the reflection of the moon on the undulating water. It is a stormy night and clouds race to cover the moon. The screen goes dark. What remains for us is the cacophony of frogs, howling dogs and, eventually, morning roosters. Hit me on the head if this was done in a single take. I saw this segment as a sound composition put together in the editing room and accompanied by a simple visualization. Twenty seven minutes! <br /><br />Except for the mildly amusing ducks, this exercise in minimalism left me cold. A nonessential film for Kiarostami admirers.<br /><br />I thought I would rate \"Five\" a five, but four is what it deserves.<br /><br />The film is dedicated to Yasujiru Ozu.\n", + "22 0 1 In the early 00's, production companies had a short-lived craze for supernatural genre movies in France after \"The Crimson Rivers\" and \"Brotherhood of the Wolf\" turned out to be hits, so several movies were green-lit or saved from their \"direct-to-video\" fate. However, France, as opposed to the US, UK or Italy, has little tradition of fantasy B-movies and it turned out quickly that \"Samouraïs\", \"Bloody Mallory\" or the \"Crimson Rivers\" sequel were ill-advised attempts at recreating a kind of magic that had never existed in French cinema in the first place. As they flopped, producers have gone back to their usual fare: derivative farces or the umpteenth self-referential tribute to French New Wave by a former critic from \"Les Cahiers du cinéma\".<br /><br />\"Brocéliande\" could only have been green-lit during this short window, as it serves no other discernible purpose. It's your by-the-book slasher movie mixed with vague mythological element and horror references and you'll find bimboesque female characters, a French University looking like a US campus and plot twists so lazy you don't even care because you had guessed it by yourself an hour before, even before the movie started.<br /><br />These elements make all the fun of a 70's or a 80's B-movie and you expect them in a 70's or 80's movie. However, we're not in the 80's anymore and nobody warned director Doug Headline, as this tribute to the slasher movie genre is nothing more than a derivative slasher movie. Headline himself is no rookie and has been writing as a critic about this kind of pictures since the early 80's but as a first time director he shows a lack of skill and ambition that makes \"Brocéliande\" a bore.<br /><br />When you put together clichés from a movie subcategory and hand them to a skilled and inventive director such as Wes Craven or Quentin Tarantino, you get a \"Scream\" or a \"Death Proof\", movies that are imitations from old guilty pleasures but also magnify these clichés and add a great deal to them. That's called \"talent\" and that's why you can't confuse these recent movies with their original inspirations shot decades ago.<br /><br />\"Brocéliande\" takes the lazy path and only reproduces the worst elements from past movies (unfortunately for the male viewer, the gratuitous nudity is mostly missing). There are very strong similarities (presumably unintentional) between the plot of \"Brocéliande\" and the reviled \"Halloween 3: Season Of The Witch\", as both deal with supernatural Druidic evil rituals and some silly attempt at taking over the world on Halloween night. As even the plot of \"Halloween 3\" makes more sense than this one, it means that something seriously wrong went with \"Brocéliande\".\n", + "27 1 0 It could be easy to complain about the quality of this movie (you don't have to throw cartloads of money at a movie to make it good, nor will it guarantee that it is worth watching) but I think that is totally missing the point. If your expecting fast cars, T&A or a movie that will spell itself out for you then don't watch this, you'll be disappointed and dumbfounded.<br /><br />This movie was thoroughly enjoyable, kept us on the edge of our seats and made us really think. The writer obviously put a lot of thought and research behind this movie and it shows through the end, just remember to keep an open mind.<br /><br />Note: the school scenes were all filmed at McMaster University and most of the rest was done in Toronto.\n", + "30 0 1 Intended as light entertainment, this film is indeed successful as such during its first half, but then succumbs to a rapidly foundering script that drops it down. Harry (Judd Nelson), a \"reformed\" burglar, and Daphne (Gina Gershon), an aspiring actress, are employed as live window mannequins at a department store where one evening they are late in leaving and are locked within, whereupon they witness, from their less than protective glass observation point, an apparent homicide occurring on the street. The ostensible murderer, Miles Raymond (Nick Mancuso), a local sculptor, returns the following day to observe the mannequins since he realizes that they are the only possible witnesses to the prior night's violent event and, when one of the posing pair \"flinches\", the fun begins. Daphne and Harry report their observations at a local police station, but when the detective taking a crime report remembers Harry's criminal background, he becomes cynical. There are a great many ways in which a film can become hackneyed, and this one manages to utilize most of them, including an obligatory slow motion bedroom scene of passion. A low budget affair shot in Vancouver, even police procedural aspects are displayed by rote. The always capable Gershon tries to make something of her role, but Mancuso is incredibly histrionic, bizarrely so, as he attacks his lines with an obvious loose rein. Although the film sags into nonsense, cinematographer Glen MacPherson prefers to not follow suit, as he sets up with camera and lighting some splendidly realised compositions that a viewer may focus upon while ignoring plot holes and witless dialogue. A well-crafted score, appropriately based upon the action, is contributed by Hal Beckett. The mentioned dialogue is initially somewhat fresh and delivered well in a bantering manner by Nelson and Gershon, but in a subsequent context of flawed continuity and logic, predictability takes over. The direction reflects a lack of original ideas or point of view, and post-production flaws set the work back farther than should be expected for a basic thriller.\n", + "34 0 1 \"An astronaut (Michael Emmet) dies while returning from a mission and his body is recovered by the military. The base where the dead astronaut is taken to becomes the scene of a bizarre invasion plan from outer space. Alien embryos inside the dead astronaut resurrect the corpse and begin a terrifying assault on the military staff in the hopes of conquering the world,\" according to the DVD sleeve's synopsis.<br /><br />A Roger Corman \"American International\" production. The man who fell to Earth impregnated, Mr. Emmet (as John Corcoran), does all right. Angela Greene is his pretty conflicted fiancée. And, Ed Nelson (as Dave Randall) is featured as prominently. With a bigger budget, better opening, and a re-write for crisper characterizations, this could have been something approaching classic 1950s science fiction.<br /><br />*** Night of the Blood Beast (1958) Bernard L. Kowalski, Roger Corman ~ Michael Emmet, Angela Greene, Ed Nelson\n", + "35 1 0 I recently rented this video after seeing \"Final Ascent\" by the same writer. I wasn't prepared for how intense this film would get. I found it engaging from start to finish, and was rooting for the teenagers to get away with their attempted crime. The ending was definitely disturbing with some of its implied violence, but well-done. I highly recommend this picture.\n", + "37 0 1 As everyone knows, nobody can play Scarlett O'Hara like Vivien Leigh, and nobody can play Rhett Butler like Clark Gable. All others pale in comparison, and Timothy Dalton and Joanne Whalley are no exceptions. One thing that I really couldn't get past was that Joanne has BROWN eyes. The green eyes were the most enhancing feature of Scarlett's good looks, and in this sequel she has been stripped of those.<br /><br />The movie, as well as the book, had several lulls in it. The new characters weren't all that memorable, and I found myself forgetting who was who. I felt as though her going to Ireland did absolutely nothing whatsoever. It could be that I'm only 11, but I saw no change in her attitude until the last say, 10 minutes when Rhett told her she had grown up. If Rhett hadn't told her that, I would have never guessed that there was any change in her attitude. She really loved Cat, her baby. She likes this child best because she had it with Rhett, her only loved husband. Still, if you've read Gone With The Wind, you would see that children make no difference in Scarlett's world. <br /><br />Quite frankly, it seemed to me like there was way too much going on without Rhett. All anybody cares about is whether or not Rhett and Scarlett get back together, and Scarlett took way too long to get to that. It is virtually nothing compared to Gone With The Wind, but then again what isn't? If you have read the novel, you will like that better than the movie.<br /><br />I would watch it, just because it is the sequel to Gone With The Wind, regardless of whether or not it's worthwhile. It may not satisfy you entirely, but it will get you some of the way there.\n", + "39 0 1 This is about some vampires (who can run around out in the sunlight), that are causing some problems down in South America. Casper Van Dien is sent in with his team of commandos to investigate. The movie opens with Van Dien & Co. walking through the jungle, and there's this huge black guy who just absolutely, positively cannot act. He speaks all his lines as if he's reading them off the cue-cards for the very first time. His voice is also so low that, well, it's positively hilarious. Great way to get the movie started! Anyhow, they run into some of our vampires, shoot them (this causes them to appear to die for about 20 seconds), and then of course they come back to life. Van Dien notices that one of them was impaled across a tree limb, and yells to his buddies to kill them with wood. The stunt work must be seen to be believed - the vampires are on wires that pull them up trees, which is supposed to make them look like they can climb really easily, but it just makes them look like they're bouncing around on bungee cords or something.<br /><br />Yeah...anyhow, later on, the huge black dude is down in South America with some guys (Van Dien not included), and they're attacked by more vampires. It's really too bad these guys never heard of a crossbow, because it would seem to be the perfect weapon to kill the little bloodsuckers with, but instead they use big old wooden stakes that they try to impale the vampires with by hand. The big black dude ends up getting captured and he eventually becomes some big powerful vampire leader. Van Dien ends up battling him later on. It doesn't help that all through the movie, everyone forgets that if you shoot a vampire, they are knocked out for 20 seconds or so, which would enable a person to stick a stake in them fairly easily. They just try to stick stakes in them in the middle of hand-to-hand combat. Yeah, not exactly brilliant tactics.<br /><br />There's a hot babe (remember Veronica from The Lost World TV show? Yes, it's her!) who also happens to be walking around in the middle of Vampire County on some sort of research mission, and she also just happens to be Van Dien's ex-wife. Hey, what are the odds? It's a shame she's not in the movie a whole lot more than she is. Will her and Casper get back together in the end? Will Van Dien defeat the huge black dude who can't act? Will the circus performer vampires make you laugh through all the numerous action scenes? Will we hear the three stooges music when somebody does something funny? Has even Lynda Carter forgotten how to act in her small cameo (she's more convincing in her Sleep Number Bed commercials)? These questions and more will will be answered if you make it all the way to the end of the movie.<br /><br />I don't know, it might score some points on the so bad it's good scale, but that's about it. Eh, it's a bunch of goofs running around in the jungle, I guess it's kind of entertaining.\n", + "49 0 1 A not so good action thriller because it unsuccessfully trends the same water as early Steven Seagal films because there is not a very good set piece. Steven Seagal plays the same kind of character that he has played since Above the Law. In my opinion the performance of Keenen Ivory Wayans is wasted in such an average film and belongs in a much better film. Bob Gunton is okay as the main heavy. The best acting in the entire film belongs to Brian Cox who is very frightening in the role of the murderer. My favorite scenes are the fight scenes with the Russian mafia. One of the film reasons to see The Glimmer Man(1996) is for the brief appearence of the beautiful and voluptupus Nikki Cox. Its too bad that there were not more scenes with her in them.\n", + "53 1 0 There's a good running bit about the price tag of a silk negligee. The bimbo in the office shows off the bargain she got for $22 (closeup of tag). Later, Mary Astor finds the tag in the boss's bedroom (proof that bimbo slept with him). Still later, Mary Astor is about to have an affair with Ricardo Cortez, looks at the price tag of HER silk negligee ($14) and is reminded of how disgusted she was about the bimbo, as well as the fact that she's spent $8 less than the \"most obvious\" woman she's ever met. It sounds an obvious morality turn, but it was well done. The film would be stronger if Robert Ames' character had been played by a more powerful actor (he's too low-key for a self-made salesman and he spends most of the film with his face turned away from the camera), and if Ricardo Cortez had been given more to do than smile ironically. Both male leads are bland and forgettable, and are hindered by the pancake male makeup so popular in this film's era. However, the Mary Astor character is interesting, appealing and believable. Behind Closed Doors is well worth seeing.\n", + "58 1 0 I'd like to point out these excellent points in favor of this movie:<br /><br />#1 Angelina Jolie sex scene <br /><br />#2 Foley artist outdid themselves <br /><br />#3 plot was quite thick <br /><br />#4 DVD does includes trailers and chapter stops<br /><br />#5 no animals were harmed in the making of the movie <br /><br />#6 homages to blade runner through out the film <br /><br />#7 burning trash cans <br /><br />#8 funny guy with no legs <br /><br />#9 Voice overs by Jack Palance added a real dynamic element to the film. <br /><br />#10 Sage advise, for example \"When you dine with the devil bring a long spoon\". <br /><br />#11 Angelina Jolie was only 18! <br /><br />To sum it up: an evening of entertainment was provided.\n", + "59 1 0 Sex, drugs, racism and of course you ABC's. What more could you want in a kid's show!<br /><br />------------------------------------------- -------------------------------------------<br /><br />\"User Comment Guidelines <br /><br />Please note there is a 1,000 word limit on comments. The recommended length is 200 to 500 words. The minimum length for comments is 10 lines of text. Comments which are too short or have been padded with junk text will be discarded. You may only post a single comment per title. <br /><br />What to include: Your comments should focus on the title's content and context. The best reviews include not only whether you liked or disliked a movie or TV-series, but also why. Feel free to mention other titles you consider similar and how this one rates in comparison to them. Comments that are not specific to the title will not be posted on our site. Please write in English only and note that we do not support HTML mark-up within the comments\"\n", + "88 1 0 i was having a horrid day but this movie grabbed me, and i couldn't put it down until the end... and i had forgotten about my horrid day. and the ending... by the way... where is the sequel!!!<br /><br />the budget is obviously extremely low... but ... look what they did with it! it reminds me of a play... they are basically working with a tent, a 'escape pod', a few guns, uniforms, camping gear, and a 'scanner' thing. that is it for props. Maybe this is even a good thing, forcing the acting and writing to have to step up and take their rightful place in film, as the centers of the work, instead of as afterthoughts used to have an excuse to make CGI fights (starwars).<br /><br />The cgi is fine. It is not exactly 'seamless'... but imho it still works. why? because there isn't too much of it, and what there is, is not 'taking over' with an army of effects house people trying to cram everything they can into the shot. it prompts the imagination... it's some relatively simple stuff, with decent composition (especially the heavy freighter shot.. there is one long shot that must be at least ten seconds...that tracks the entire length of the ship... it must be a record for sci fi battle sequence film making in the past 10 years, to have an action sequence that lasts longer than 0.75 seconds), and some relation to the story. it might look old or not 'state of the art', but it doesn't look stupid and it doesn't take away from the story.<br /><br />The acting is good, except the characters die too fast to get to know them. The captain was great, but a few of his scenes could have used another take. I also got confused with his character losing his cool and stomping on a corpse, I like to think captains are calm cool and in control... what was going on in that scene? did the other crew worry about him losing it at that moment? did he feel himself losing control? <br /><br />Now, as for the plot.... mostly it is good... why? Because it doesn't try to explain itself. It just happens. It's called 'the planet', its a mystery, get it?? Nobody knows why there is a statue, and they don't find out either. The mysterious cult? The weird scientist with the tattoo? What do you expect to find out in less than 90 minutes? This isn't War and Peace. And, thank god, it's not star wars/trek either. No midichlorians, no 5 minutes of expository boring dialog that has no purpose in the story. The characters are stranded, and are only able to figure out a few basic things... it is not a star trek episode where they find out it's leonardo davinci or a child like space wanderer. It is mysterious, and i liked that. I don't know why, maybe I can identify with these guys more , since they don't know whats happening, and i don't either... they don't talk a lot of space gibberish or have magic boxes telling them what is happening. <br /><br />In fact, I would argue that one of the weakest moments is when the 'traitor' turns on the crew, and tries to 'explain' the reason for the planet, the cult, etc. This coincidentally has some of the weakest dialog, imho, in the whole movie, and it interrupts the flow and some of the characters look unnatural in that scene. <br /><br />OK, sometimes I felt it was a little too mysterious, though. Like, why did the guy get fried through his eyes with lightning? That was odd. Just weird. The 'hamlet' ending... again I would have liked to have known some of these characters better. And would it have been so hard to have a 30 second rescue scene at the end? This is not a serial show, it was a film, and we like closure in films, even if they can have a sequel. Imagine Hamlet with no 'flights of angels sing thee to thy rest'<br /><br />Anyways. What can I say. This was well worth the dollar I payed at the 'red box' machine at the supermarket. It was also, imho, a better piece of storytelling than starwars parts 1 2 or 3. Like I said, it sucked me in, wanting to know what was happening, and I couldn't stop watching until the end.\n", + "90 0 1 Just watched this today on TCM, where the other reviewers here saw it.<br /><br />Sorry that I was the only one to find Davies a weak actress, with a truly awful attempt at an Irish (Irish-American or otherwise) accent. As she's the star, it was sort of hard for me to get past that -- especially as the other reviewers have said that this was her finest performance.<br /><br />Another particularly terrible Davies performance was in \"Marianne\" (1929), which I also watched today. In this film, given a 9 of 10 rating here, her accent switches from that of a (correct) French woman to an odd combination of Italian and Swiss.<br /><br />Interestingly, in TCM's one-hour bio of Davies -- \"Captured on Film: The True Story of Marion Davies\" (2001) -- film historian Jeanine Basinger claims that \"one of the things that you note about Marion Davies in her sound work is how good she is at doing accents.\" Of course this bio also includes commentary by fans (make of that what you will).<br /><br />Davies was a very attractive young woman, and by all accounts a terrific comedienne in real life.<br /><br />And because a part of her anatomy added immeasurably to the real-life answer to Joseph Cotten's character's search for the meaning behind Kane's final word in the opening scene of the great \"Citizen Kane,\" she's earned her spot among the great stories if Hollywood's history.<br /><br />But I think Welles & Mankiewicz got it right for the most part with the \"Susan Alexander\" facsimile of the real article.<br /><br />Don't bother voting as to whether you agree or disagree with this post as I really couldn't care less.\n", + "94 0 1 Clearly this film was made for a newer generation that may or may not have had an inkling of Charles Bukowski's work. The autobiographical Henry Chinaski character in Bukowski's stories was brilliantly portrayed to perfection by Mickey Rourke in 1987's 'Barfly', also starring Faye Dunaway. Anyone who has seen 'Factotum' should certainly see 'Barfly' to get a better look at how Bukowski wrote his character. 'Factotum' lacks the greasy seediness of Bukowski's screenplay and the fearless hopelessness of his loner hero. The inadvertent humor that bubbles through in the dark desperation of Chinaski's misadventures doesn't work for Dillon as it did so admirably for the overweight filthy blood-soaked Rourke. Rourke's character makes the pain and pleasure of the previous night's misbehavior a place-setting for yet another grueling ugly day in the life of a drunken misanthropic unknown writer. Dillon's character misses these marks in favor of a strutting, handsome, relatively clean-looking wanna-be writer that scarcely passes for any moment in that of Chinaski's story. Dunaway's sleazy heroine Wanda is the perfect complement to the ne'er-do-well Henry. The women in 'Factotum' can't hold a candle to Dunaway's 'distressed goddess' and the use of more profane sexual subject matter in 'Factotum' proves to be more of a crude distraction than a tip of the hat to Bukowski's raw and unapologetic portrayals of dysfunctional relationships. I was stunned at how many of the exact same scenes were used in 'Factotum' (Marisa Tomei buying all the stuff and charging it to the old man is an exact rip-off from 'Barfly').<br /><br />If you want to see the best Bukowski stories on film, see 'Barfly' and 'Love is a Dog From Hell' (which also goes by the title 'Crazy Love').\n", + "98 1 0 There are few films that deal with things that I would consider myself an expert on, this one is.<br /><br />After some years of Fantasy Role Playing we split, me not leaving without a sense of shame of what I had become: a dork.<br /><br />You see, these things are really canonical, it happens to everybody.<br /><br />First you create a character fairly and it dies after the first attack.<br /><br />Then you help a little with the constitution, and while you're at it, why not help with strength, intelligence, intuition, charisma and dexterity too? This in turn frustrates the game master who doesn't know how to deal with this invincible gang. And after a while it bores the players too, so they start to create ever more exotic race-profession combinations, no matter how ludicrous it is.<br /><br />I created a Druedain warrior monk, yeah, not that far from the film.<br /><br />And that's not all to be said about the destructiveness of the inherent dynamic of this devilish game (think the hunt for experience points), but just watch the film, it shows it all - and of course the stupidity of its most basic premisses.<br /><br />For this end, in turn, there is no better profession than the bard. I don't exactly understand why the bard became a character in the first place, after all, the blacksmith is none. But once it became one, it had to be mapped into the game flow, that is: it had to be made lethal, at least indirectly. The poking of fun out of this never comes to an end and rightfully so.<br /><br />Sure, it's not exactly a professional production, but I haven't seen a better satire in ages.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "On affiche finalement le score du modèle sur l'ensemble d'évaluation." + ], + "metadata": { + "id": "VaBD1-jaoR3w" + } + }, + { + "cell_type": "code", + "source": [ + "if training_args.do_eval:\n", + " metrics = trainer.evaluate(eval_dataset=small_eval_dataset)\n", + " print(metrics)" + ], + "metadata": { + "id": "3IdSk-1XHiVK", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "fda9b9d0-757a-4808-99e2-7604da855250" + }, + "execution_count": 45, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'eval_loss': 0.8092994093894958, 'eval_accuracy': 0.83, 'eval_runtime': 1.4515, 'eval_samples_per_second': 68.896, 'eval_steps_per_second': 8.957, 'epoch': 5.0}\n", + "{'eval_loss': 0.8092994093894958, 'eval_accuracy': 0.83, 'eval_runtime': 1.4515, 'eval_samples_per_second': 68.896, 'eval_steps_per_second': 8.957, 'epoch': 5.0}\n" + ] + } + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "visual", + "language": "python", + "name": "visual" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.5" + }, + "colab": { + "provenance": [], + "collapsed_sections": [ + "-XRoTAe-50e1" + ] + }, + "accelerator": "GPU", + "gpuClass": "standard", + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "c6e23151ae944eecb8984e4b1a39cd2f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0ef4673e9bc847cf9477a54e4f161fce", + "IPY_MODEL_402a4a8cd9fd44cea9565b83c552f9bd", + "IPY_MODEL_7de702593b5c4808a9a5777345df5fae" + ], + "layout": "IPY_MODEL_b06a8dbd3c234e3bacc87016dbc3f64b" + } + }, + "0ef4673e9bc847cf9477a54e4f161fce": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_46b099d47d9f407e8375a5ad52bf3843", + "placeholder": "", + "style": "IPY_MODEL_d9bfaae50ae5428b91fdd46544a315ba", + "value": "Map: 100%" + } + }, + "402a4a8cd9fd44cea9565b83c552f9bd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a5d74c23e4494f798d656bfa80862854", + "max": 25000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4689217815ef4a31baacd665c4ac6c43", + "value": 25000 + } + }, + "7de702593b5c4808a9a5777345df5fae": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1bcf826b8a434c9e89a720206d1dc979", + "placeholder": "", + "style": "IPY_MODEL_a7a988d41c6f4bf59d564e9ccd4d1356", + "value": " 25000/25000 [00:25<00:00, 1110.72 examples/s]" + } + }, + "b06a8dbd3c234e3bacc87016dbc3f64b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "46b099d47d9f407e8375a5ad52bf3843": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d9bfaae50ae5428b91fdd46544a315ba": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a5d74c23e4494f798d656bfa80862854": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4689217815ef4a31baacd665c4ac6c43": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1bcf826b8a434c9e89a720206d1dc979": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a7a988d41c6f4bf59d564e9ccd4d1356": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file -- GitLab