{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hidden Markov Model for NER\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "from app.travel_resolver.libs.nlp.data_processing import from_bio_file_to_examples\n", "\n", "BIO_FILE = \"data/bio/fr.bio/1k_samples.bio\"\n", "\n", "sentences, labels, _, unique_labels = from_bio_file_to_examples(BIO_FILE)" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [], "source": [ "from app.travel_resolver.libs.nlp.data_processing import process_sentence\n", "\n", "processed_sentences = []\n", "processed_labels = []\n", "\n", "for sentence, label in zip(sentences, labels):\n", " p_sentence, p_label = process_sentence(\n", " sentence, stemming=True, labels_to_adapt=label, rm_stopwords=True\n", " )\n", " processed_sentences.append(p_sentence)\n", " processed_labels.append(p_label)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Splitting the data between **training** and **test** set. We will do an `80/20` split.\n" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "train_sentences, test_sentences, y_train, y_test = train_test_split(\n", " processed_sentences, processed_labels, test_size=0.2\n", ")" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [], "source": [ "def t2_given_t1(\n", " t2: str | int,\n", " t1: str | int,\n", " train_bag=y_train,\n", " unique_labels_mapping: dict = unique_labels,\n", "):\n", " \"\"\"\n", " Get the probability of getting t2 given t1 in the given labels\n", "\n", " Args:\n", " t2: str | int, the second tag\n", " t1: str | int, the first tag\n", " train_bag: list, the list of labels\n", "\n", " Returns:\n", " float, the probability of getting t2 given t1\n", " \"\"\"\n", " t1 = t1 if isinstance(t1, int) else unique_labels_mapping[t1]\n", " t2 = t2 if isinstance(t2, int) else unique_labels_mapping[t2]\n", " count_t1 = 0\n", " count_t2_t1 = 0\n", " for row in train_bag:\n", " for index in range(len(row) - 1):\n", " if row[index] == t1:\n", " count_t1 += 1\n", " if row[index] == t1 and row[index + 1] == t2:\n", " count_t2_t1 += 1\n", " return count_t2_t1 / count_t1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next part, we will be getting the **transition matrix** which represents the _probability_ of transitioning from a state to another $P(S_2 | S_1)$. In our case it would be for example $P(O | \\text{ARR-LOC})$.\n" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.74208238, 0.53819444, 0.91217799],\n", " [0.16145726, 0.06712963, 0.03278689],\n", " [0.09646036, 0.39467593, 0.05503513]])" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "tags = list(unique_labels.keys())\n", "n_tags = len(tags)\n", "\n", "trans_matrix = np.zeros((n_tags, n_tags))\n", "\n", "for t1 in range(n_tags):\n", " for t2 in range(n_tags):\n", " trans_matrix[t1][t2] = t2_given_t1(tags[t1], tags[t2])\n", "\n", "trans_matrix" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OLOC-DEPLOC-ARR
O0.7420820.5381940.912178
LOC-DEP0.1614570.0671300.032787
LOC-ARR0.0964600.3946760.055035
\n", "
" ], "text/plain": [ " O LOC-DEP LOC-ARR\n", "O 0.742082 0.538194 0.912178\n", "LOC-DEP 0.161457 0.067130 0.032787\n", "LOC-ARR 0.096460 0.394676 0.055035" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "trans_matrix_df = pd.DataFrame(trans_matrix, columns=tags, index=tags)\n", "\n", "trans_matrix_df" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "plt.figure(figsize=(8, 5))\n", "\n", "sns.set(font_scale=1.2)\n", "\n", "sns.heatmap(trans_matrix_df, annot=True, square=True, annot_kws={\"fontsize\": 12}, cmap=\"Blues\")\n", "\n", "plt.title(\"Transition Matrix\")\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [], "source": [ "import math\n", "from fractions import Fraction\n", "\n", "\n", "def round_down(x, a):\n", " return math.floor(x / a) * a\n", "\n", "\n", "def get_emission_prob_dict(\n", " sentences: list[str] = train_sentences,\n", " labels: list[int] = y_train,\n", " tags: dict = unique_labels,\n", "):\n", " \"\"\"\n", " Given a bunch of sentences and their labels, get the emission probability of each word given each tag\n", "\n", " Parameters:\n", " sentences (list): The list of sentences\n", " labels (list): The list of labels\n", " tags (dict): The dictionary of tags\n", "\n", " Returns:\n", " dict: The dictionary of emission probabilities\n", " \"\"\"\n", " tags = list(tags.keys())\n", " word_tag_count = {}\n", " # Add tag\n", " word_tag_count[\"\"] = {tag: 0 for tag in tags}\n", "\n", " tag_count = {tag: 0 for tag in tags}\n", "\n", " # Count n times a word has tag\n", " for i in range(len(sentences)):\n", " for word, label in zip(sentences[i].split(\" \"), labels[i]):\n", " if word not in word_tag_count:\n", " word_tag_count[word] = {tag: 0 for tag in tags}\n", " word_tag_count[word][tags[label]] += 1\n", " tag_count[tags[label]] += 1\n", "\n", " words_to_remove = []\n", "\n", " # combining least represented words under \n", " for word in word_tag_count:\n", " # if word not frequent enough add it to \n", " if sum(word_tag_count[word].values()) < 3 and not word == \"\":\n", " for tag in word_tag_count[word]:\n", " word_tag_count[\"\"][tag] += word_tag_count[word][tag]\n", " words_to_remove.append(word)\n", " continue\n", "\n", " word_tag_count = {\n", " key: word_tag_count[key] for key in word_tag_count if key not in words_to_remove\n", " }\n", "\n", " # Calculate the prob of a word given tag\n", " for word in word_tag_count:\n", " if word == \"\":\n", " print(word_tag_count[word])\n", " for tag in word_tag_count[word]:\n", " if word_tag_count[word][tag] == 0:\n", " word_tag_count[word][tag] = 0\n", " continue\n", " word_tag_count[word][tag] = word_tag_count[word][tag] / tag_count[tag]\n", "\n", " return word_tag_count" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['je', 'veux', 'part', 'de', 'montpelli', 'à', 'paris', '.', '']" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sentence_test = \"Je veux partir de Montpellier à Paris.\"\n", "\n", "s_t = process_sentence(\n", " sentence_test, stemming=True, rm_stopwords=False, return_tokens=True\n", ") + [\"\"]\n", "\n", "s_t" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OLOC-DEPLOC-ARR
je0.0508180.0000000.000000
veux0.0019260.0000000.000000
part0.0054560.0000000.000000
de0.1086980.0011570.001160
à0.0625870.0000000.000000
paris0.0000000.0115740.011601
.0.0680430.0000000.000000
<UNK>0.0010700.7789350.778422
\n", "
" ], "text/plain": [ " O LOC-DEP LOC-ARR\n", "je 0.050818 0.000000 0.000000\n", "veux 0.001926 0.000000 0.000000\n", "part 0.005456 0.000000 0.000000\n", "de 0.108698 0.001157 0.001160\n", "à 0.062587 0.000000 0.000000\n", "paris 0.000000 0.011574 0.011601\n", ". 0.068043 0.000000 0.000000\n", " 0.001070 0.778935 0.778422" ] }, "execution_count": 147, "metadata": {}, "output_type": "execute_result" } ], "source": [ "em_prob_df.filter(items=s_t, axis=0)" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'O': 2, 'LOC-DEP': 674, 'LOC-ARR': 664}\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OLOC-DEPLOC-ARR
<UNK>0.0003560.7782910.777518
je0.0833780.0000000.000000
voudr0.0426670.0000000.000000
trouv0.0426670.0000000.000000
vol0.0375110.0000000.000000
ver0.0428440.0000000.000000
compagn0.0288000.0000000.000000
aérien0.0288000.0000000.000000
d'hélicopter0.0008890.0000000.000000
.0.1136000.0000000.000000
\n", "
" ], "text/plain": [ " O LOC-DEP LOC-ARR\n", " 0.000356 0.778291 0.777518\n", "je 0.083378 0.000000 0.000000\n", "voudr 0.042667 0.000000 0.000000\n", "trouv 0.042667 0.000000 0.000000\n", "vol 0.037511 0.000000 0.000000\n", "ver 0.042844 0.000000 0.000000\n", "compagn 0.028800 0.000000 0.000000\n", "aérien 0.028800 0.000000 0.000000\n", "d'hélicopter 0.000889 0.000000 0.000000\n", ". 0.113600 0.000000 0.000000" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "em_prob_dict = get_emission_prob_dict()\n", "\n", "em_prob_df = pd.DataFrame(em_prob_dict).T\n", "\n", "em_prob_df.head(10)" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "em_prob = em_prob_df.to_numpy()" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "image/png": "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cIUELjY4VLPjWb78C5x88s/x4IP/wtixoyEIPE466SS8++67OPvssyGKIubOnYv+/gHce+8/EA5XV3vJsozrrrsWDz30APbbb/+ypFPu9+XsePQRkF5lt2DBi7joot/gRz/6P+y0005YtOglPProI7jkksswa9beZdf16Mtf4q6778Haj57CsE1nwds1Fv7kB1j20Tu4/vobMG3a1gCADz74AKecclJhiNq+eO+9d3H33X/HiSf+Akcd9dOyx6YRDSUcnucQiYTwi1/8AkuXLsUvfnE6AoEA7rjjVgwM9OOeex6s+Dnm83mccMLRSCQSOPHEU5HP53HzzdcjGAzijjvuU/ui/vrXP2LevMdw0kmnYtSo0Xjggfvw8ccf4c4778PYseMAAIsWLcRNN12Hu+76B0SxNaaXlXDeeWfhnXfexKabTsXuu++JXC6Hjz76EN/5zhb40Y9+XLKewcEBPPHEo7j11pswa9a+uOiiSwGQOiHHcejv70c8HsO4cePb+j6qwZVMu3BRAdWe0G+66Trsvfe+CAa7MTCQwn//+x4WLFiAG2+8GXvuuTsYhsGMGTOw55574oknHsNRR/20ogjhs88+xV/+8md89NGHEEWxrt8rigJR9BR6h+JqGs7v9xW8yTQ/uLlzb8Yee+yJM844EwCw4447IRqN4tZb51Yknf12GIkbL1uIXfb8Ifb54VGYNrkHvREvTjzxeNxxx+249trrAQC3334rpkyZgt/+9mIAwE477Yx8Po+7774Lhx12WMlmSQknl8urhBMOh7BkyRIsWLAAf/zjtdh5510AAN/97nQcdtgP8cgjD+Hoo48ru84FC+bjf//7BPfc8yAmTpwEANh00yn46U//Dy+++Dz22Wc/rF69Co888i+ceea56ujlHXbYCYcffjDuu+/v+NWvLgQA7Lrr7rj11hvxyCP/wo9/fGTZ87UC1177J7z77n9w9NHH4YADDkJ3d7f6u1gsVvIZ5vN5PPvs05g79wbsuecslXD0Y6e7u7sNx9mQ4KrXXAwZLFv2GV577RXsvff31Z+98cbr8Pl82GKL6Vi/Po5YLIVgMIQddtgBr7/+Gnp6uhCJhODziWBZI5lddtmlkGUJt9xyW9kNotrvw+EgBIFXU2qZDJm4un79gOoH5/N5kUjEsGLFV9h7770NfnB77LEnvv76a6xY8VXZ9/rf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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(5, 5))\n", "ax = fig.add_subplot(projection=\"3d\")\n", "\n", "xx = em_prob[:, 0]\n", "yy = em_prob[:, 1]\n", "zz = em_prob[:, 2]\n", "\n", "xlabel = list(em_prob_df.columns)[0]\n", "ylabel = list(em_prob_df.columns)[1]\n", "zlabel = list(em_prob_df.columns)[2]\n", "\n", "# Words with the highest probability on each axis\n", "x_highest_i = np.argmax(em_prob[:, 0])\n", "y_highest_i = np.argmax(em_prob[:, 1])\n", "z_highest_i = np.argmax(em_prob[:, 2])\n", "\n", "for i in enumerate([x_highest_i, y_highest_i, z_highest_i]):\n", " ax.text(\n", " xx[i[1]],\n", " yy[i[1]],\n", " zz[i[1]],\n", " f\"'{em_prob_df.index[i[1]]}'\\n({xx[i[1]]:.2f}, {yy[i[1]]:.2f}, {zz[i[1]]:.2f})\",\n", " fontsize=12,\n", " ha=\"center\",\n", " va=\"center\",\n", " )\n", "\n", "ax.scatter(xx, yy, zz)\n", "\n", "ax.get_xaxis().set_ticklabels([])\n", "ax.get_yaxis().set_ticklabels([])\n", "ax.get_zaxis().set_ticklabels([])\n", "\n", "ax.set_xlabel(xlabel)\n", "ax.set_ylabel(ylabel)\n", "ax.set_zlabel(zlabel)\n", "\n", "# Move zlabel closer to plot\n", "ax.zaxis.labelpad = -10\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [], "source": [ "def get_start_prob(labels: list[int] = y_train, tags: dict = unique_labels):\n", " \"\"\"\n", " Get the start probability of each tag\n", "\n", " Parameters:\n", " labels (list): The list of labels\n", " tags (dict): The dictionary of tags\n", "\n", " Returns:\n", " dict: The dictionary of start probabilities\n", " \"\"\"\n", " tags = list(tags.keys())\n", " start_prob = {tag: 0 for tag in tags}\n", " for label in labels:\n", " start_prob[tags[label[0]]] += 1\n", " total_count = sum(start_prob.values())\n", " for tag in start_prob:\n", " start_prob[tag] /= total_count\n", " return start_prob" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1., 0., 0.])" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "startprob = get_start_prob()\n", "\n", "startprob = np.array(list(startprob.values()))\n", "\n", "startprob" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Start Probability
O1.0
LOC-DEP0.0
LOC-ARR0.0
\n", "
" ], "text/plain": [ " Start Probability\n", "O 1.0\n", "LOC-DEP 0.0\n", "LOC-ARR 0.0" ] }, "execution_count": 153, "metadata": {}, "output_type": "execute_result" } ], "source": [ "startprob_df = pd.DataFrame(\n", " startprob, index=unique_labels.keys(), columns=[\"Start Probability\"]\n", ")\n", "\n", "startprob_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since we already have the model parameters, we don't need to use the automatic model estimation with `fit()`. Therefore, we will pass the probabilities directly to the model and move on to the predictions.\n" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [], "source": [ "from hmmlearn.hmm import CategoricalHMM\n", "\n", "vocab = list(em_prob_dict.keys())\n", "\n", "hmm = CategoricalHMM(n_components=n_tags, n_iter=100)\n", "\n", "hmm.n_features = len(vocab)\n", "hmm.startprob_ = startprob\n", "hmm.transmat_ = trans_matrix.T\n", "hmm.emissionprob_ = em_prob.T" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [], "source": [ "def encode_sentence(sentence: str, vocab: list[str]):\n", " \"\"\"\n", " Encode a sentence into a list of integers\n", "\n", " Parameters:\n", " sentence (str): The sentence to encode\n", " vocab (list): The vocabulary\n", "\n", " Returns:\n", " list: The list of integers\n", " \"\"\"\n", " return [\n", " vocab.index(word) if word in vocab else vocab.index(\"\")\n", " for word in sentence.split(\" \")\n", " ]" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "quel: O\n", "trajet: O\n", "fair: O\n", "aller: O\n", "perpignan: LOC-DEP\n", "montpelli: LOC-ARR\n" ] } ], "source": [ "from app.travel_resolver.libs.nlp.data_processing import process_sentence\n", "\n", "vocab = list(em_prob_dict.keys())\n", "\n", "test_sentence = \"Quel trajet faire pour aller de Perpignan à Montpellier\"\n", "\n", "test_sentence = process_sentence(test_sentence, stemming=True, rm_stopwords=True)\n", "\n", "test_sentence_encoded = encode_sentence(test_sentence, vocab)\n", "\n", "test_sentence_encoded = np.array(test_sentence_encoded).reshape(-1, 1)\n", "\n", "predicted_labels = hmm.predict(test_sentence_encoded)\n", "\n", "for word, label in zip(test_sentence.split(\" \"), predicted_labels):\n", " print(f\"{word}: {list(unique_labels.keys())[label]}\")" ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [], "source": [ "test_sentences_encoded = [\n", " encode_sentence(sentence, vocab) for sentence in test_sentences\n", "]\n", "test_sentences_lengths = [len(sentence) for sentence in test_sentences_encoded]\n", "\n", "\n", "test_sentences_encoded_flat = [\n", " item for sublist in test_sentences_encoded for item in sublist\n", "]\n", "test_sentences_encoded = np.array(test_sentences_encoded_flat).reshape(-1, 1)\n", "\n", "predicted_labels_test = hmm.predict(test_sentences_encoded, test_sentences_lengths)" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "F1 Score: 0.6749156355455568\n" ] } ], "source": [ "from sklearn.metrics import accuracy_score, f1_score\n", "\n", "y_test_flat = [item for sublist in y_test for item in sublist]\n", "\n", "f1 = f1_score(y_test_flat, predicted_labels_test, average=\"micro\", labels=[1, 2])\n", "\n", "print(f\"F1 Score: {f1}\")" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "conf matrix [[1432 0 2]\n", " [ 0 103 117]\n", " [ 1 26 197]]\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'Confusion Matrix on test data')" ] }, "execution_count": 163, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import confusion_matrix\n", "\n", "conf_matrix = confusion_matrix(y_test_flat, predicted_labels_test)\n", "\n", "print(\"conf matrix\", conf_matrix)\n", "\n", "conf_matrix = conf_matrix / conf_matrix.sum(axis=1)\n", "\n", "conf_matrix_df = pd.DataFrame(conf_matrix, columns=tags, index=tags)\n", "\n", "\n", "plt.figure(figsize=(8, 5))\n", "\n", "sns.set(font_scale=1)\n", "\n", "sns.heatmap(\n", " conf_matrix_df, annot=True, square=True, annot_kws={\"fontsize\": 12}, cmap=\"Blues\"\n", ")\n", "\n", "plt.xlabel(\"Predicted\")\n", "plt.ylabel(\"True\")\n", "plt.title(\"Confusion Matrix on test data\")" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import RocCurveDisplay\n", "from sklearn.preprocessing import LabelBinarizer\n", "\n", "class_of_interest = \"LOC-DEP\"\n", "class_id = list(unique_labels.keys()).index(class_of_interest)\n", "\n", "label_binarizer = LabelBinarizer().fit(y_test_flat)\n", "y_test_onehot = label_binarizer.transform(y_test_flat)\n", "y_pred_onehot = label_binarizer.transform(predicted_labels_test)\n", "\n", "display = RocCurveDisplay.from_predictions(\n", " y_test_onehot[:, class_id],\n", " y_pred_onehot[:, class_id],\n", " name=f\"{class_of_interest} vs Rest\",\n", " plot_chance_level=True,\n", ")\n", "\n", "_ = display.ax_.set(\n", " xlabel=\"False Positive Rate\",\n", " ylabel=\"True Positive Rate\",\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluating new sentences\n", "\n", "In this section, we will be evaluating the model capacity on sentences that hasn't contributed to the model's probabilities.\n", "\n", "The corpus is formed from an initial dataset of 20 unique blueprint sentences that were used to generate a 1000 sentences with different \"Departures\" and \"Arrivals\".\n" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [], "source": [ "new_sentences, new_labels, new_vocab, new_unique_labels = from_bio_file_to_examples(\n", " \"./data/bio/fr.bio/800_eval_small_samples.bio\"\n", ")" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [], "source": [ "sls_new_sentences = []\n", "sls_new_labels = []\n", "\n", "for sentence, label in zip(new_sentences, new_labels):\n", " p_sentence, p_label = process_sentence(\n", " sentence, stemming=True, labels_to_adapt=label, rm_stopwords=True\n", " )\n", " sls_new_sentences.append(p_sentence)\n", " sls_new_labels.append(p_label)" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [], "source": [ "sls_new_sentences_encoded = [\n", " encode_sentence(sentence, vocab) for sentence in sls_new_sentences\n", "]\n", "\n", "sls_new_sentences_length = [len(sentence) for sentence in sls_new_sentences_encoded]\n", "\n", "\n", "sls_new_sentences_flat = [\n", " item for sublist in sls_new_sentences_encoded for item in sublist\n", "]\n", "\n", "sls_new_sentences_encoded = np.array(sls_new_sentences_flat).reshape(-1, 1)\n", "\n", "new_sentences_pred = hmm.predict(sls_new_sentences_encoded, sls_new_sentences_length)" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [], "source": [ "y_real = [item for sublist in sls_new_labels for item in sublist]" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "F1: 0.3812801101169993\n" ] } ], "source": [ "f1_score_new = f1_score(y_real, new_sentences_pred, average=\"micro\", labels=[1, 2])\n", "\n", "print(f\"F1: {f1_score_new}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see the sharp decrease from the other corpus, and that's the limitation of HMM, they can go as far as their they know - by know I the known observations and emission probs - .\n" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[3314, 186, 820],\n", " [ 0, 241, 608],\n", " [ 1, 237, 590]])" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "consufion_matrix_new = confusion_matrix(y_real, new_sentences_pred)\n", "\n", "consufion_matrix_new" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({0: 4320, 1: 849, 2: 828})" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from collections import Counter\n", "\n", "Counter(y_real)" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Confusion Matrix HMM on new data')" ] }, "execution_count": 172, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import confusion_matrix\n", "\n", "conf_matrix = confusion_matrix(y_real, new_sentences_pred)\n", "\n", "conf_matrix = np.round(conf_matrix / conf_matrix.sum(axis=0), 2)\n", "\n", "conf_matrix_df = pd.DataFrame(conf_matrix, columns=tags, index=tags)\n", "\n", "plt.figure(figsize=(8, 5))\n", "\n", "sns.set(font_scale=1)\n", "\n", "sns.heatmap(\n", " conf_matrix_df, annot=True, square=True, annot_kws={\"fontsize\": 12}, cmap=\"Blues\"\n", ")\n", "\n", "plt.xlabel(\"Predicted Labels\")\n", "plt.ylabel(\"True Labels\")\n", "plt.title(\"Confusion Matrix HMM on new data\")" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n", "Even though the 'startprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 's'\n", "Even though the 'transmat_' attribute is set, it will be overwritten during initialization because 'init_params' contains 't'\n", "Even though the 'emissionprob_' attribute is set, it will be overwritten during initialization because 'init_params' contains 'e'\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[0.11692084241103849, 0.15783704786262331, 0.14619289340101524, 0.1215783860646996, 0.14670308232539991, 0.14045906132237068, 0.15143974404550303, 0.12706995606623858, 0.12127894156560089, 0.11530249110320284, 0.11458333333333333, 0.16469691193290126, 0.1560379918588874, 0.15489422732162064, 0.15068015347052668, 0.18445518780215694, 0.15480304077401522, 0.13828689370485037, 0.1728101466508125, 0.16194625998547568, 0.16495629038388446, 0.1774387796065837, 0.15412058508740634, 0.15793357933579336, 0.14457831325301204, 0.15610113594723343, 0.11690140845070422, 0.1413665432514305, 0.17109375, 0.1608598962194218]\n" ] } ], "source": [ "from sklearn.utils import resample\n", "\n", "f1_scores = []\n", "\n", "for _ in range(30):\n", " # Resample the training data with replacement\n", " train_sentences_resampled, y_train_resampled = resample(\n", " sls_new_sentences, sls_new_labels, replace=True\n", " )\n", "\n", " train_sentences_resampled_encoded = [\n", " encode_sentence(sentence, vocab) for sentence in train_sentences_resampled\n", " ]\n", "\n", " train_sentences_resampled_flat = [\n", " item for sublist in train_sentences_resampled_encoded for item in sublist\n", " ]\n", "\n", " # Train the HMM on the resampled data\n", " hmm.fit(\n", " np.array(train_sentences_resampled_flat).reshape(-1, 1),\n", " lengths=[len(sentence) for sentence in y_train_resampled],\n", " )\n", "\n", " # Predict on the test data\n", " predicted_labels_test_resampled = hmm.predict(\n", " test_sentences_encoded, test_sentences_lengths\n", " )\n", "\n", " # Compute the F1 score\n", " f1_resampled = f1_score(\n", " y_test_flat, predicted_labels_test_resampled, average=\"micro\", labels=[1, 2]\n", " )\n", " f1_scores.append(f1_resampled)\n", "\n", "print(f1_scores)" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.11692084241103849,\n", " 0.15783704786262331,\n", " 0.14619289340101524,\n", " 0.1215783860646996,\n", " 0.14670308232539991,\n", " 0.14045906132237068,\n", " 0.15143974404550303,\n", " 0.12706995606623858,\n", " 0.12127894156560089,\n", " 0.11530249110320284,\n", " 0.11458333333333333,\n", " 0.16469691193290126,\n", " 0.1560379918588874,\n", " 0.15489422732162064,\n", " 0.15068015347052668,\n", " 0.18445518780215694,\n", " 0.15480304077401522,\n", " 0.13828689370485037,\n", " 0.1728101466508125,\n", " 0.16194625998547568,\n", " 0.16495629038388446,\n", " 0.1774387796065837,\n", " 0.15412058508740634,\n", " 0.15793357933579336,\n", " 0.14457831325301204,\n", " 0.15610113594723343,\n", " 0.11690140845070422,\n", " 0.1413665432514305,\n", " 0.17109375,\n", " 0.1608598962194218]" ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f1_scores" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "with open(\"hmm_f1_results\", \"wb\") as f:\n", " pickle.dump(f1_scores, f)" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "python3" }, "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.12.4" } }, "nbformat": 4, "nbformat_minor": 2 }