1360 lines
215 KiB
Plaintext
1360 lines
215 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "dd72d1539056a64",
|
|
"metadata": {},
|
|
"source": [
|
|
"Import Cell\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "12579bf734bb1a92",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-11-23T13:53:57.753560Z",
|
|
"start_time": "2025-11-23T13:53:56.325948Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Loaded 13 test sentences\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import spacy\n",
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import seaborn as sns\n",
|
|
"from collections import Counter\n",
|
|
"import string\n",
|
|
"from IPython.display import display, HTML\n",
|
|
"\n",
|
|
"nlp_lg = spacy.load(\"en_core_web_lg\")\n",
|
|
"nlp_trf = spacy.load(\"en_core_web_trf\")\n",
|
|
"\n",
|
|
"nlp = nlp_lg\n",
|
|
"\n",
|
|
"# Test sentences covering different similarity types\n",
|
|
"test_sentences = [\n",
|
|
" # Direct copies and near-copies\n",
|
|
" \"The cat sat on the mat.\",\n",
|
|
" \"The cat sat on the mat\",\n",
|
|
" \"The cat sat on the mat.\",\n",
|
|
" \n",
|
|
" # Paraphrases\n",
|
|
" \"On the mat, the cat was sitting.\",\n",
|
|
" \"The feline rested on the rug.\",\n",
|
|
" \n",
|
|
" # Structural changes\n",
|
|
" \"The quick brown fox jumps over the lazy dog.\",\n",
|
|
" \"Over the lazy dog jumps the quick brown fox.\",\n",
|
|
" \n",
|
|
" # Different content\n",
|
|
" \"The dog ran in the park.\",\n",
|
|
" \"I love programming.\",\n",
|
|
" \"She enjoys reading books.\",\n",
|
|
" \n",
|
|
" # Edge cases\n",
|
|
" \"Short.\",\n",
|
|
" \"A B C D E F G\",\n",
|
|
" \"\"\n",
|
|
"]\n",
|
|
"\n",
|
|
"print(f\"Loaded {len(test_sentences)} test sentences\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1c26616777253f10",
|
|
"metadata": {},
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "e003ac06a58cfbb4",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-11-23T13:54:12.922343Z",
|
|
"start_time": "2025-11-23T13:54:12.896440Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>sentence_id</th>\n",
|
|
" <th>sentence</th>\n",
|
|
" <th>char_length</th>\n",
|
|
" <th>word_count</th>\n",
|
|
" <th>alpha_word_count</th>\n",
|
|
" <th>avg_word_length</th>\n",
|
|
" <th>has_punctuation</th>\n",
|
|
" <th>is_empty</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>0</td>\n",
|
|
" <td>The cat sat on the mat.</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2.833333</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>1</td>\n",
|
|
" <td>The cat sat on the mat</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2.833333</td>\n",
|
|
" <td>False</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>2</td>\n",
|
|
" <td>The cat sat on the mat.</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2.833333</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>3</td>\n",
|
|
" <td>On the mat, the cat was sitting.</td>\n",
|
|
" <td>32</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3.428571</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>4</td>\n",
|
|
" <td>The feline rested on the rug.</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>3.833333</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>5</td>\n",
|
|
" <td>The quick brown fox jumps over the lazy dog.</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>10</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>3.888889</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>6</td>\n",
|
|
" <td>Over the lazy dog jumps the quick brown fox.</td>\n",
|
|
" <td>44</td>\n",
|
|
" <td>10</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>3.888889</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>7</td>\n",
|
|
" <td>The dog ran in the park.</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>3.000000</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>8</td>\n",
|
|
" <td>I love programming.</td>\n",
|
|
" <td>19</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5.333333</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>9</td>\n",
|
|
" <td>She enjoys reading books.</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5.250000</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>10</td>\n",
|
|
" <td>Short.</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>5.000000</td>\n",
|
|
" <td>True</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>11</td>\n",
|
|
" <td>A B C D E F G</td>\n",
|
|
" <td>13</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>1.000000</td>\n",
|
|
" <td>False</td>\n",
|
|
" <td>False</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>12</td>\n",
|
|
" <td></td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0.000000</td>\n",
|
|
" <td>False</td>\n",
|
|
" <td>True</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" sentence_id sentence char_length \\\n",
|
|
"0 0 The cat sat on the mat. 23 \n",
|
|
"1 1 The cat sat on the mat 22 \n",
|
|
"2 2 The cat sat on the mat. 28 \n",
|
|
"3 3 On the mat, the cat was sitting. 32 \n",
|
|
"4 4 The feline rested on the rug. 29 \n",
|
|
"5 5 The quick brown fox jumps over the lazy dog. 44 \n",
|
|
"6 6 Over the lazy dog jumps the quick brown fox. 44 \n",
|
|
"7 7 The dog ran in the park. 24 \n",
|
|
"8 8 I love programming. 19 \n",
|
|
"9 9 She enjoys reading books. 25 \n",
|
|
"10 10 Short. 6 \n",
|
|
"11 11 A B C D E F G 13 \n",
|
|
"12 12 0 \n",
|
|
"\n",
|
|
" word_count alpha_word_count avg_word_length has_punctuation is_empty \n",
|
|
"0 7 6 2.833333 True False \n",
|
|
"1 6 6 2.833333 False False \n",
|
|
"2 7 6 2.833333 True False \n",
|
|
"3 9 7 3.428571 True False \n",
|
|
"4 7 6 3.833333 True False \n",
|
|
"5 10 9 3.888889 True False \n",
|
|
"6 10 9 3.888889 True False \n",
|
|
"7 7 6 3.000000 True False \n",
|
|
"8 4 3 5.333333 True False \n",
|
|
"9 5 4 5.250000 True False \n",
|
|
"10 2 1 5.000000 True False \n",
|
|
"11 7 7 1.000000 False False \n",
|
|
"12 0 0 0.000000 False True "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAzKxJREFUeJzs3Wd4VFX39/HfpIeQhCQEEiAkIYD0YijSiyAiggiKKEpHbw1KURT0RroUpShSvRUsYKGKBRCR3qQIgkg1FCmhJoEACST7ecGT+TMkQBLCTBK+n+uaS2affc5ec2ZkFmv22cdijDECAAAAAAAA7MjJ0QEAAAAAAADg/kNRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKuEsWi0U9e/Z0dBi4xzp37qz8+fNnef+wsDA9/vjj2RgRAABwtJUrV8pisWjlypWODsUhDh06JIvFog8++MDRoQDIpShKAbdw8OBBvfTSSypRooQ8PDzk4+OjOnXq6MMPP9Tly5cdHd5dO378uAYPHqzt27fbbczUxG3u3Ll2GzMzLl26pMGDB+fqxPL06dPq1auXypQpI09PTxUqVEg1atTQW2+9pYsXL97Tsd977z0tXLjwno4BALj/fPfdd7JYLFqwYEGabZUrV5bFYtGKFSvSbCtevLhq165tjxAzLDfkl5MnT9bMmTMdHUYaO3fu1FNPPaXQ0FB5eHioaNGiatq0qSZOnHhPx3VEzgzcT1wcHQCQE/300096+umn5e7uro4dO6pChQpKSkrS2rVr1a9fP/3111+aPn26o8O8K8ePH9eQIUMUFhamKlWqODqcHOHSpUsaMmSIJKlhw4aODSYLzp07p2rVqik+Pl5du3ZVmTJldPbsWf3555+aMmWKXn755bua7XUn7733np566im1bt36no0BALj/1K1bV5K0du1aPfnkk9b2+Ph47dq1Sy4uLlq3bp0aNWpk3Xb06FEdPXpU7du3t3u8t5Jb8svJkyerYMGC6ty5s6NDsVq/fr0aNWqk4sWLq0ePHgoKCtLRo0e1ceNGffjhh3r11Vfv2djkzMC9RVEKuEl0dLTat2+v0NBQ/fbbbwoODrZui4qK0oEDB/TTTz/ZNaaEhAR5eXnZdcysyk2x5jWffvqpjhw5onXr1qX5ZTg+Pl5ubm4OigwAgKwrUqSIwsPDtXbtWpv2DRs2yBijp59+Os221OepBa2sMsboypUr8vT0vKvj5MT8MjcZMWKEfH19tXnzZhUoUMBm26lTpxwTFIBsweV7wE3GjBmjixcv6tNPP7VJGFKVLFlSvXr1StO+cOFCVahQQe7u7ipfvryWLFlis/3w4cN65ZVX9MADD8jT01MBAQF6+umndejQIZt+M2fOlMVi0apVq/TKK6+oUKFCKlasWKaOIUmxsbHq06ePwsLC5O7urmLFiqljx446c+aMVq5cqerVq0uSunTpIovFIovFYjNVe9OmTXr00Ufl6+urfPnyqUGDBlq3bp3NGIMHD5bFYtHu3bv13HPPyc/P766Tv9TYe/furZCQELm7u6tkyZIaPXq0UlJSrH1uXMNg+vTpioiIkLu7u6pXr67NmzenOeacOXNUrlw5eXh4qEKFClqwYIE6d+6ssLAw6/ECAwMlSUOGDLGek8GDB9sc59ixY2rdurXy58+vwMBAvfHGG0pOTs7wa/vll19UpUoVeXh4qFy5cpo/f7512z///COLxaLx48en2W/9+vWyWCz6+uuvb3nsgwcPytnZWQ899FCabT4+PvLw8LBpy8x7fODAAXXu3FkFChSQr6+vunTpokuXLln7WSwWJSQk6PPPP7eeuxt/YT127Ji6du2qwoULW/8f+eyzz2zGSr2887vvvtOIESNUrFgxeXh46OGHH9aBAwfSvKZNmzbpsccek5+fn7y8vFSpUiV9+OGHNn327Nmjp556Sv7+/vLw8FC1atW0aNGiW55DAEDOVLduXf3xxx82l7itW7dO5cuXV/PmzbVx40abPGHdunWyWCyqU6eOJOnatWsaNmyYNV8ICwvT22+/rcTERJtxUteAXLp0qapVqyZPT09NmzZNkvTvv/+qdevW8vLyUqFChdSnT580+99KZvPLjMabXq6S+jpu/B5OzS/XrVunvn37KjAwUF5eXnryySd1+vRpm/3++usvrVq1yvp9ntHZ4+PHj1doaKg8PT3VoEED7dq1y7ptxowZslgs+uOPP9Ls995778nZ2VnHjh275bEPHjyo8uXLpylISVKhQoXStH311VeKjIyUp6en/P391b59ex09etSmT8OGDVWhQgXt3r1bjRo1Ur58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J5/IxeV6Cnbt2jV1795dvXv31urVqx0cIQAAgH1lqSj1/PPPW/8cGRmpw4cPa8+ePSpevLgKFiyYbcEBAADkFVu2bLEpSEmSi4uL3nzzTVWrVs2BkQEAADhGpi/fu3r1qiIiIqxrIUhSvnz59OCDD1KQAgAAuAUfHx8dOXIkTfvRo0fl7e3tgIgAAAAcK9MzpVxdXXXlypV7EQuyWVj/nxwy7qFR3H0RAICbPfPMM+rWrZs++OAD1a5dW5K0bt069evXT88++6yDowMA5Fb8uw+5WZYu34uKitLo0aP1v//9z2YKOgAAAGxFR0crPDxcH3zwgSwWizp27Khr167JGCM3Nze9/PLLGjVqlKPDBAAAsLssVZQ2b96s5cuX65dfflHFihXl5eVls33+/PnZEhwAAEBuFxERodDQUDVq1EiNGjXSgQMHFBsba92WL18+xwYIAADgIFkqShUoUEBt27bN7lgAAADynN9++00rV67UypUr9fXXXyspKUklSpRQ48aN1bhxYzVs2FCFCxd2dJgAAAB2l6Wi1IwZM7I7DgAAgDypYcOGatiwoSTpypUrWr9+vbVI9fnnn+vq1asqU6aM/vrrL8cGCgAAYGcsCAUAAGAnHh4eaty4serWratGjRpp8eLFmjZtmvbs2ePo0AAAAOwuy0WpuXPn6rvvvtORI0eUlJRks23btm13HRgAAEBekZSUpI0bN2rFihVauXKlNm3apJCQENWvX18ff/yxGjRo4OgQAQAA7M4pKzt99NFH6tKliwoXLqw//vhDNWrUUEBAgP755x81b948u2MEAADItRo3biw/Pz+98sorOnXqlF566SUdPHhQe/fu1SeffKIXXnhBxYsXd3SYAAAAdpelotTkyZM1ffp0TZw4UW5ubnrzzTe1bNkyvfbaa4qLi8vuGAEAAHKtNWvWKCAgQI0bN9bDDz+spk2bKjg42NFhAQAAOFyWilJHjhxR7dq1JUmenp66cOGCJOmFF17Q119/neHjjBw5UtWrV5e3t7cKFSqk1q1ba+/evTZ9rly5oqioKAUEBCh//vxq27atYmJishI2AACA3cXGxmr69OnKly+fRo8erSJFiqhixYrq2bOn5s6dq9OnTzs6RAAAAIfIUlEqKChI586dkyQVL15cGzdulCRFR0fLGJPh46xatUpRUVHauHGjli1bpqtXr+qR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6Sl/f3+1b99eR48etenTsGFDVahQQbt371ajRo2UL18+FS1aVGPGjElzvMOHD6tVq1by8vJSoUKF1KdPHy1dulQWi8X6K1/Dhg31008/6fDhw9Yp+TeuySBdL1iOGDFCxYoVk4eHhx5++GFm8wEA7KJx48aSrv+AJ916TaXbrSmU+h3u7u6u6tWra/PmzWn237Nnj9q1a6fAwEB5enrqgQce0DvvvCPp+npB/fr1kySFh4dbvy8PHTpkHWfmzJlpjnlzPnT48GG98soreuCBB+Tp6amAgAA9/fTTNjOiZs6cqaefflqS1KhRI+tYN35v3/z6T506pW7duqlw4cLy8PBQ5cqV9fnnn9v0yez5yIzKlStrwoQJio2N1ccff2zzWm5eU2rLli1q1qyZChYsKE9PT4WHh6tr167WGAMDAyVJQ4YMsb721HPYuXNn5c+fXwcPHtRjjz0mb29vdejQwbrt5vwl1fjx4xUaGipPT081aNBAu3btstmekc/UnWJLb02pa9euadiwYdZzHRYWprfffjtNTp66zMPatWtVo0YNeXh4qESJEvriiy/SP+FALuHi6AAAZNysWbPUpk0bubm56dlnn9WUKVO0efNmVa9eXa6urnryySc1f/58TZs2zebXsYULFyoxMVHt27eXdL140KpVK61du1YvvviiypYtq507d2r8+PHat2+fFi5caDPub7/9pu+++049e/ZUwYIFrV+8H374oVq1aqUOHTooKSlJ33zzjZ5++mn9+OOPatGihXX/zp0767vvvtMLL7yghx56SKtWrbLZniomJkYPPfSQtRAWGBioxYsXq1u3boqPj1fv3r1veW5KlCihIkWKaO3atda2zZs3KykpSbVr11bt2rW1bt06vf7665JknVGVWpT666+/VK9ePfn4+OjNN9+Uq6urpk2bpoYNG2rVqlVp1vB65ZVXFBgYqHfffdf669unn36ql156SbVr11bv3r31zz//qFWrVvL391dISMjt3toMGzFihAYOHKh27dqpe/fuOn36tCZOnKj69evrjz/+UIECBax9z58/r0cffVRt2rRRu3btNHfuXL311luqWLGimjdvLun6L4eNGzfWiRMn1KtXLwUFBWn27NlasWKFzbjvvPOO4uLi9O+//2r8+PGSpPz589v0GTVqlJycnPTGG28oLi5OY8aMUYcOHbRp06Zsee0AANzKwYMHJUkBAQFZ2n/27Nm6cOGCXnrpJVksFo0ZM0Zt2rTRP//8I1dXV0nSn3/+qXr16snV1VUvvviiwsLCdPDgQf3www8aMWKE2rRpo3379unrr7/W+PHjVbBgQUlSYGBgptZS2rx5s9avX6/27durWLFiOnTokKZMmaKGDRtq9+7dypcvn+rXr6/XXntNH330kd5++22VLVtWkqz/vdnly5fVsGFDHThwQD179lR4eLjmzJmjzp07KzY2Vr169cr0+ciKp556St26ddMvv/yiESNGpNvn1KlTeuSRRxQYGKj+/furQIECOnTokObPny/p+vmcMmWKXn75ZT355JNq06aNJKlSpUrWY1y7dk3NmjVT3bp19cEHHyhfvny3jeuLL77QhQsXFBUVpStXrujDDz9U48aNtXPnThUuXDjDry8jsd2se/fu+vzzz/XUU0/p9ddf16ZNmzRy5Ej9/fffWrBggU3fAwcOWM9hp06d9Nlnn6lz586KjIxU+fLlMxwnkKMYALnCli1bjCSzbNkyY4wxKSkpplixYqZXr17WPkuXLjWSzA8//GCz72OPPWZKlChhff7ll18aJycns2bNGpt+U6dONZLMunXrrG2SjJOTk/nrr7/SxHTp0iWb50lJSaZChQqmcePG1ratW7caSaZ37942fTt37mwkmUGDBlnbunXrZoKDg82ZM2ds+rZv3974+vqmGe9mTz/9tPH09DRJSUnGGGNGjhxpwsPDjTHGTJ482RQqVMja94033jCSzLFjx4wxxrRu3dq4ubmZgwcPWvscP37ceHt7m/r161vbZsyYYSSZunXrmmvXrtm89kKFCpkqVaqYxMREa/v06dONJNOgQYPbxm6MMaGhoaZFixa33H7o0CHj7OxsRowYYdO+c+dO4+LiYtPeoEEDI8l88cUX1rbExEQTFBRk2rZta20bO3askWQWLlxobbt8+bIpU6aMkWRWrFhhbW/RooUJDQ1NE9eKFSuMJFO2bFmb1/7hhx8aSWbnzp13fO0AAGRE6vfwr7/+ak6fPm2OHj1qvvnmGxMQEGA8PT3Nv//+a4y5/j2Y3ndvp06dbL7LoqOjjSQTEBBgzp07Z23//vvv0+RU9evXN97e3ubw4cM2x0xJSbH++f333zeSTHR0tE2f1HFmzJiRJqab86H08p0NGzak+V6fM2dOmu/qVDe//gkTJhhJ5quvvrK2JSUlmVq1apn8+fOb+Pj4TJ+P9KTmBHPmzLlln8qVKxs/Pz/r89T3NPWcLViwwEgymzdvvuUxTp8+nea8perUqZORZPr375/utvTe/xs/O8YYs2nTJiPJ9OnTx9qW0c/U7WIbNGiQufGf4Nu3bzeSTPfu3W36peapv/32m7UtNDTUSDKrV6+2tp06dcq4u7ub119/Pc1YQG7B5XtALjFr1iwVLlxYjRo1knR9qvczzzyjb775RsnJyZKuT10vWLCgvv32W+t+58+f17Jly/TMM89Y2+bMmaOyZcuqTJkyOnPmjPWROvX95lkyDRo0ULly5dLE5OnpaTNOXFyc6tWrp23btlnbUy/1e+WVV2z2ffXVV22eG2M0b948tWzZUsYYm7iaNWumuLg4m+Omp27dujZrR61bt061a9eWJNWpU0enTp3S/v37rdvCw8NVpEgRJScn65dfflHr1q1VokQJ6/GCg4P13HPPae3atYqPj7cZq0ePHnJ2drY+37Jli06dOqX//Oc/NrPUOnfuLF9f39vGnVHz589XSkqK2rVrZ3N+goKCVKpUqTTvW/78+fX8889bn7u5ualGjRr6559/rG1LlixR0aJF1apVK2ubh4eHevToken4unTpYvPa69WrJ0k24wEAkB2aNGmiwMBAhYSEqH379sqfP78WLFigokWLZul4zzzzjPz8/KzPb/4OO336tFavXq2uXbuqePHiNvtm91pIN+ZXV69e1dmzZ1WyZEkVKFDgjrnQrfz8888KCgrSs88+a21zdXXVa6+9posXL2rVqlU2/e90Pu5G/vz5deHChVtuT531/eOPP6a5SU1mvPzyyxnu27p1a5vPTo0aNVSzZk39/PPPWR4/I1KP37dvX5v21Jn9P/30k017uXLlrO+FdH1m1gMPPECuhVyNohSQCyQnJ+ubb75Ro0aNFB0drQMHDujAgQOqWbOmYmJitHz5cknXF09s27atvv/+e+t16PPnz9fVq1dtilL79+/XX3/9pcDAQJtH6dKlJV2fNn2j8PDwdOP68ccf9dBDD8nDw0P+/v7WKcs33gHv8OHDcnJySnOMkiVL2jw/ffq0YmNjNX369DRxpa6TdXNcN7txXSljjNavX686depIkipUqCAfHx+tW7dOV65c0datW639T58+rUuXLumBBx5I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3377rfr27avq1asrf/78atmyZabGAwDAHrp27apx48apWbNm6tatm06dOqWpU6eqfPnyaW5eklEfffSR6tatqwcffFAvvviiwsPDdejQIf3000/avn27pOvflZL0zjvvqH379nJ1dVXLli3l5eWl7t27a9SoUerevbuqVaum1atXW/OhGz3++OP68ssv5evrq3LlymnDhg369ddfFRAQYNOvSpUqcnZ21ujRoxUXFyd3d3c1btxYhQoVSnPMF198UdOmTVPnzp21detWhYWFae7cuVq3bp0mTJhw2zWesmLNmjW6cuWKkpOTdfbsWa1bt06LFi2Sr6+vFixYoKCgoFvu+/nnn2vy5Ml68sknFRERoQsXLuiTTz6Rj4+PtYjj6empcuXK6dtvv1Xp0qXl7++vChUqZHnNr5IlS6pu3bp6+eWXlZiYqAkTJiggIEBvvvmmtU9GP1OZia1y5crq1KmTpk+frtjYWDVo0EC///67Pv/8c7Vu3dp6gyMgT7P37f4AZE7Lli2Nh4eHSUhIuGWfzp07G1dXV3PmzBljzPVbE4eEhBhJZvjw4enuk5SUZEaPHm3Kly9v3N3djZ+fn4mMjDRDhgwxcXFx1n6STFRUVLrH+PTTT02pUqWMu7u7KVOmjJkxY0aaW90aY0xCQoKJiooy/v7+Jn/+/KZ169Zm7969RpIZNWqUTd+YmBgTFRVlQkJCjKurqwkKCjIPP/ywmT59eobOV0JCgnFxcTGSzC+//JJme6VKlYwkM3r06DTbtm3bZpo1a2by589v8uXLZxo1amTWr19v0yf1tsW3uk3x5MmTTXh4uHF3dzfVqlUzq1evvuUthG+Weqvf9B7dunWz9ps3b56pW7eu8fLyMl5eXqZMmTImKirK7N2719qnQYMGpnz58mnGuPm2xcYY888//5gWLVoYT09PExgYaF5//XUzb948I8ls3LjR2u/ixYvmueeeMwUKFDCSrMe51e2fb3f7awAAsuJO38M3+uqrr0yJEiWMm5ubqVKlilm6dGma78HU76r3338/zf6SzKBBg2zadu3aZZ588klToEAB4+HhYR544AEzcOBAmz7Dhg0zRYsWNU5OTkaSiY6ONsYYc+nSJdOtWzfj6+trvL29Tbt27cypU6fSjHP+/HnTpUsXU7BgQZM/f37TrFkzs2fPHhMaGmo6depkM9Ynn3xiSpQoYZydnY0ks2LFCmOMSTf3iImJsR7Xzc3NVKxYMc13dGbPx81Sc4LUh6urqwkMDDT169c3I0aMMKdOnUqzT+p7mnqetm3bZp599llTvHhx4+7ubgoVKmQef/xxs2XLFpv91q9fbyIjI42bm5tNbJ06dTJeXl7pxne793/s2LEmJCTEuLu7m3r16pkdO3ak2T8jn6nbxZZennz16lUzZMgQEx4eblxdXU1ISIgZMGCAuXLlik2/0NBQ06JFizQxZTTPBHIqizGsigbA/rZv366qVavqq6++UocOHRwdDm4yYcIE9enTR//++2+Wb68NAAAAALfDmlIA7rnLly+naZswYYKcnJxUv359B0SEG938/ly5ckXTpk1TqVKlKEgBAAAAuGdYUwrAPTdmzBht3bpVjRo1kouLixYvXqzFixfrxRdfvONd7XDvtWnTRsWLF1eVKlUUFxenr776Snv27NGsWbMcHRoAAACAPIzL9wDcc8uWLdOQIUO0e/duXbx4UcWLF9cLL7ygd955Ry4u1MYdbcKECfrf//6nQ4cOKTk5WeXKldObb76Z5q6NAAAAAJCdKEoBAAAAAADA7lhTCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdpfnVxhOSUnR8ePH5e3tLYvF4uhwAABALmOM0YULF1SkSBE5OfF7HgAAQHbJ80Wp48ePc8t5AABw144ePapixYo5OgwAAIA8I88Xpby9vSVdTyR9fHwcHA0AAMht4uPjFRISYs0pAAAAkD3yfFEq9ZI9Hx8filIAACDLWAYAAAAge7EwAgAAAAAAAOyOohQAAAAAAADsjqIUAAAAAAAA7I6iFAAAAAAAAOyOohQAAAAAAADsjqIUAAAAAAAA7I6iFAAAAAAAAOyOohQAAAAAAADsjqIUAAAAAAAA7I6iFAAAAAAAAOyOohQAAAAAAADsjqIUAAAAAAAA7M7F0QEAAOwrrP9PDhv70KgWDhsbAAAAQM7CTCkAAAAAAADYHUUpAAAAAAAA2B1FKQAAAAAAANgda0oBAHIER611xTpXAAAAgGMwUwoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHaXo4tSgwcPlsVisXmUKVPG0WEBAAAAAADgLrk4OoA7KV++vH799VfrcxeXHB8yAAAAAAAA7iDHV3hcXFwUFBTk6DAAAAAAIE+5mHhNZy4k6vTFRJ25kKgzFxN1+mKSTv//P5+5mKgLV67pWnKKrqUYJaeY//tvcoqSU4ySjVGKkTxdneXl5qx87i7ycneRj4eLfD1dVSCfq/zyualAPjcF+3qouH8+hQbkk7eHq6NfPoAcIMcXpfbv368iRYrIw8NDtWrV0siRI1W8ePFb9k9MTFRiYqL1eXx8vD3CBAAAAIAcKSb+ivbFXNC+mIvaH3NB+2IuaP+pi7pw5Vq2jZF0LUVxl69muL+/l5u1QBXqn0/FA7wUGpBPEYH55e/llm1xAcjZcnRRqmbNmpo5c6YeeOABnThxQkOGDFG9evW0a9cueXt7p7vPyJEjNWTIEDtHCgDIq8L6/+SQcQ+NauGQcQEAude15BTtPhGvP47Eas/JC9YCVHw2Fp+yy7mEJJ1LSNL2o7FpthX3z6cqIQWuP4oXUPkiPnJ3cbZ/kADuuRxdlGrevLn1z5UqVVLNmjUVGhqq7777Tt26dUt3nwEDBqhv377W5/Hx8QoJCbnnsQIAAACAPV25mqyth89rU/Q5bTl0TtuPxupSUrKjw7prR85d0pFzl7Rox3FJkpuzk8oGe1uLVJHF/VU8IJ+DowSQHXJ0UepmBQoUUOnSpXXgwIFb9nF3d5e7u7sdowIAAACAey8lxWj7v7Faf+CM1h04q61HzivpWoqjw7rnkpJTtOPfOO34N06fbzgsSQov6KXGZQqpcZlCqhHuL1fnHH1jeQC3kKuKUhcvXtTBgwf1wgsvODoUAAAAALjnklOMNkWf1eKdJ7X0r5M6dSHxzjvdB6LPJOjTtdH6dG20vN1dVLdUQTUuU0iNyhRSwfxMUgByixxdlHrjjTfUsmVLhYaG6vjx4xo0aJCcnZ317LPPOjo0AAAAALgnriWnaMM/Z/XzzpNatvukzlxMcnRIOdqFxGtavOukFu86KYtFqlSsgJqWLaQnqhRViD+X+QE5WY4uSv3777969tlndfbsWQUGBqpu3brauHGjAgMDHR0aAAAAAGSblBSjNQfO6Kc/j2vZ7hidv5TxO9nh/xgj7Tgaqx1HYzV22T5VC/XTk1WLqUWlYPl6ujo6PAA3ydFFqW+++cbRIQAAAADAPXP2YqK+2XxUX/9+RP+ev+zocPIUY6TNh85r86HzGvzDX2pWPkjPVg9RrYgAWSwWR4cHQDm8KAUAAAAAedHWw+f0xYbDWrzzpJKS8/5i5Y6WdC1FP+w4rh92HFdYQD61qx6idtVCWH8KcDCKUgAAAABgB5eSrmnBH8f01cYj+vtEvKPDuW8dOntJY5bs1Ye/7lfbyGJ6qX4JhQZ4OTos4L5EUQoAAAAA7qHTFxI1bdVBfbv5qC4kXnN0OPj/Eq+laPamI/p281E1rxCk/zSIUIWivo4OC7ivUJQCAAAAgHvgzMXrxaivNh7R5avJjg4Ht5CcYvTjnyf0458nVK9UQb3cMEK1Iwo6OizgvkBRCgAAAACy0bmEJE1bfVBfbjisS0kUo3KTNfvPaM3+M6oSUkAvN4zQI+UKsyg6cA9RlAIAAACAbBB7KUnTVv+jL9YfUgLFqFxt+9FYvfTlVlUJKaCBj5dVZKi/o0MC8iSKUgAAAABwFy4mXtO0VQc1Y90hXWTNqDxl+9FYtZ2yQS0qBav/o2UU4p/P0SEBeQpFKQAAAADIAmOMFvxxTKMW79GpC4mODgf30E9/ntCy3THqWidcUY0i5O3h6uiQgDyBohQAAAAAZNKuY3EatOgvbT183tGhwE6SrqVo6qqDmrv1qPo0La321YvL2Yn1poC74eToAAAAAAAgt7hw5aoGfb9LrT5eS0HqPnXmYpLeWbBLj324RpsPnXN0OECuRlEKAAAAADLgpz9PqMm4Vfp8w2GlGEdHA0fbG3NBz0zboKE/7NaVqyxsD2QFl+8BAAAAwG3ExF9R/3l/asXe044OBTlMipE+WxetFXtP6f2nKqlaGHfpAzKDmVIAAAAAcAtLdp1UswmrKUjhtqLPJKjdtA0a9iOzpoDMoCgFAAAAADe5lHRN/ef9qf98tVWxl646OhzkAilG+nRttB77cI22HmatKSAjKEoBAAAAwA12/hunxz9aq282H3V0KMiF/jmToKenbtCIn3Yr8RqzpoDboSgFAAAAAJJSUoymrDyoNlPW6Z8zCY4OB7lYipE+WROtp6Zs0NFzlxwdDpBjUZQCAAAAcN87EXdZHf63SaOX7NHVZG6th+yx81icHp+4Vr/ujnF0KECORFEKAAAAwH1t86Fzevyjtdrwz1lHh4I8KO7yVfX4cotGLd6j5BQKnsCNKEoBAADgvrVy5UpZLBbFxsbetl9YWJgmTJhgl5hys0OHDslisWj79u2ODiXD5mw5qg6fbNLZhCRHh4I8zBhp6qqD6jzjd8WxcD5gRVEKAAAAud7UqVPl7e2ta9euWdsuXrwoV1dXNWzY0KZvaiHq4MGDql27tk6cOCFfX19J0syZM1WgQIFsialz586yWCyyWCxyc3NTyZIlNXToUJsY77XBgwerSpUq9+TYnTt3VuvWrW3aQkJCdOLECVWoUOGejJmdUlKM3vv5b/Wb+6eSklMcHQ7uE2v2n1GrSWu19+QFR4cC5AgUpYD/1959h0dVJW4cfye9BwKpEAi99yagFAVBUMFlBVyU4i4WQER0RdZV0FUBXV1EENSfCmtZu4goKEaaoPRQpAqhB0JJ75mZ3x+ss8bQApk5k8n38zx5ZO5M7nnnQoJ5OedcAABQ4fXs2VPZ2dnauHGj49jq1asVExOjdevWKT8/33F8+fLlqlWrlurVqyc/Pz/FxMTIYrE4JVffvn2VkpKiffv26eGHH9bUqVP1wgsvOGUsd+Dt7a2YmBj5+PiYjnJR2QXFuuedjXp91QHTUVAJHTqTq9teXaNvfz5hOgpgHKUUAAAAKrxGjRopNjZWK1ascBxbsWKFBgwYoDp16uinn34qcbxnz56OX/+6fG/FihUaNWqUMjIyHDOcpk6d6vi83Nxc3X333QoNDVWtWrX0+uuvXzKXv7+/YmJiVLt2bd1///3q1auXFi1aJEnq0aOHJkyYUOL1AwcO1MiRIx2PExIS9Nxzz1103KNHj+qOO+5QRESEgoOD1b59e61bt07z58/XU089pa1btzrez/z588+7xC49PV0Wi8Vx/axWq/785z+rTp06CgwMVKNGjfTyyy87Xj916lQtWLBAX3zxhePcK1asOO+5V65cqY4dO8rf31+xsbF67LHHSswW69Gjh8aPH69HH31UERERiomJKXHdy9vRtFz9ce5afbcr1WljAJeSW2jV/e9t1gfrD5uOAhhFKQUAAACP0LNnTy1fvtzxePny5erRo4e6d+/uOJ6Xl6d169Y5Sqnf6tKli2bOnKmwsDClpKQoJSVFjzzyiOP5F198Ue3bt9eWLVs0ZswY3X///dqzZ0+ZMgYGBqqwsGx7F11s3OzsbHXv3l3Hjh3TokWLtHXrVj366KOy2WwaMmSIHn74YTVr1szxfoYMGXJZY9psNtWsWVMff/yxdu7cqSeffFJ/+9vf9NFHH0mSHnnkEQ0ePNgxEywlJUVdunQpdZ5jx46pX79+6tChg7Zu3aq5c+fqzTff1DPPPFPidQsWLFBwcLDWrVun559/Xk8//bSWLVtWput0OTYePKsBs9doN0un4AasNrse+2y75iz/xXQUwBj3nlcLAAAAXKaePXtqwoQJKi4uVl5enrZs2aLu3burqKhI8+bNkyT9+OOPKigoOG8p5efnp/DwcFksFsXExJR6vl+/fhozZowkadKkSfrXv/6l5cuXq1GjRpfMZrfblZiYqG+++UYPPPBAmd7XxcZ9//33derUKW3YsEERERGSpPr16zs+NyQkRD4+Pud9Pxfj6+urp556yvG4Tp06+vHHH/XRRx9p8ODBCgkJUWBgoAoKCi567ldffVXx8fGaPXu2LBaLGjdurOPHj2vSpEl68skn5eV17t/IW7ZsqSlTpkiSGjRooNmzZysxMVG9e/cuU+6L+X73Sd337mYVFrN/FNzLC9/s0ensAj15c1OnLSUG3BWlFAAAADxCjx49lJOTow0bNigtLU0NGzZUZGSkunfvrlGjRik/P18rVqxQ3bp1VatWrTKfv2XLlo5f/1pcpaZefAnY4sWLFRISoqKiItlsNv3pT38q89K0i42blJSkNm3aOAqp8jRnzhy99dZbOnz4sPLy8lRYWFjmTdN37dqlzp07l/hBu2vXrsrOztbRo0cdvw+/fY+SFBsbe8lrWxZLd5zQ+P9sYUNzuK231xzU2ZxC/fP2VvL1ZkETKg9KKQAAAHiE+vXrq2bNmlq+fLnS0tLUvXt3SVJcXJzi4+O1du1aLV++XNdff/0Vnd/X17fEY4vFIpvt4iVHz549NXfuXPn5+SkuLq7EBuBeXl6y2+0lXl9UVPpW8RcbNzAwsEzv4ddxJZUY+/fjfvDBB3rkkUf04osvqnPnzgoNDdULL7ygdevWlXm8y3El1/Zyfbn1uB76MEnFNvulXwwY9EXScaXlFmnenW0V5MeP6qgcqGABAADgMXr27KkVK1ZoxYoV6tGjh+N4t27dtGTJEq1fv/68S/d+5efnJ6vVWm55goODVb9+fdWqVavUHekiIyOVkpLieGy1WrVjx44ynb9ly5ZKSkrS2bNnz/v8+d5PZGSkJJUY+7cbk0vSmjVr1KVLF40ZM0Zt2rRR/fr1tX///kue+/eaNGmiH3/8sUQBtmbNGoWGhqpmzZqXfH9X69NNRzWBQgoVyKq9p/SnN9YpPbdse88BFRWlFAAAADxGz5499cMPPygpKckxU0qSunfvrtdee02FhYUXLaUSEhKUnZ2txMREnT59Wrm5uU7Lev311+urr77SV199pd27d+v+++9Xenp6mc5xxx13KCYmRgMHDtSaNWt04MABffrpp/rxxx8lnXs/ycnJSkpK0unTp1VQUKDAwEBdc801mj59unbt2qWVK1fq73//e4nzNmjQQBs3btQ333yjvXv36oknntCGDRtKvCYhIUHbtm3Tnj17dPr06fPO8hozZoyOHDmiBx54QLt379YXX3yhKVOmaOLEiY4ZW87yn/WH9ddPtspKIYUKJulIuu56c72y8kt/TQGehlIKAAAAHqNnz57Ky8tT/fr1FR0d7TjevXt3ZWVlqVGjRoqNjb3g53fp0kX33XefhgwZosjISD3//PNOy3r33XdrxIgRGj58uLp37666detetDA7Hz8/P3377beKiopSv3791KJFC02fPl3e3t6SpEGDBqlv377q2bOnIiMj9Z///EeS9NZbb6m4uFjt2rXThAkTSt0N795779Uf/vAHDRkyRJ06ddKZM2ccm63/avTo0WrUqJHat2+vyMhIrVmzplS+GjVq6Ouvv9b69evVqlUr3Xffffrzn/9cqgQrbwvWHtTfPt8u+ihUVNuPZejP8zcqv6j8Zm4C7shi//1Cdg+TmZmp8PBwZWRkKCwszHQcADAu4bGvjI19cHr/Cz5nKtfFMknumwuuw/9LABXLmz8k6x+Ld5qOAZSLHo0i9cbw9mx+Do/Fn2wAAAAAHuHTTUf1zFcUUvAcK/ac0oQPkliGCo9FKQUAAACgwlu+O1WTPt0mz14Hgsroq+0pmvzZtlJ36wQ8AaUUAAAAgApt06E0jXlvM3fZg8f6aONR/WPxLtMxgHJHKQUAAACgwko+naO/LNigPDaEhod7a02yZn6313QMoFxRSgEAAACokNJyCjXq7fVKyy0yHQVwiZnf7dOXW4+bjgGUG0opAAAAABVOQbFVo/+9UQfP5JqOArjUo59s08/HM0zHAMoFpRQAAACACuevH2/TxkNppmMALpdXZNU9/96kszmFpqMAV41SCgAAAECF8vaaZC1iCRMqsWPpeRrz3iYVW22m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WrZsmSTJZrPppptu0po1a/Tuu+9q586dmj59ury9vR25+vbtq0GDBmnbtm368MMP9cMPP2jcuHFXff2ioqI0bNgwLVq0SFar9arPBwAAAADuhOV7AJzGx8dH8+fP1+jRozVv3jy1bdtW3bt319ChQ9WyZUtJ52YZrV+/XqmpqfL395ck/fOf/9TChQv1ySef6J577pF0rhyaP3++QkNDJUl33XWXEhMT9eyzzyo8PFx+fn4KCgpSTEyMY/zZs2erTZs2eu655xzH3nrrLcXHx2vv3r1q2LChJKlly5aaMmWKJKlBgwaaPXu2EhMT1bt3b3333Xdav369du3a5Xh93bp1HeebNm2ahg0b5tjPqkGDBpo1a5a6d++uuXPnKiAg4KquYePGjZWVlaUzZ84oKirqqs4FAAAAAO6EmVIAnGrQoEE6fvy4Fi1apL59+2rFihVq27at5s+fL0naunWrsrOzVa1aNcfMqpCQECUnJ2v//v2O8yQkJDgKKUmKjY1VamrqRcfeunWrli9fXuK8jRs3lqQS5/61IDvfuZOSklSzZk1HIXW+MebPn19ijD59+shmsyk5OfnyL9QF2O12SeeW9wEAAACAJ2GmFACnCwgIUO/evdW7d2898cQT+stf/qIpU6Zo5MiRys7OVmxsrFasWFHq8357hzpfX98Sz1ksFtlstouOm52drVtuuUUzZswo9VxsbOxlnTswMPCSY9x7770aP358qedq1ap10c+9HLt27VJYWJiqVat21ecCAAAAAHdCKQXA5Zo2baqFCxdKktq2basTJ07Ix8dHCQkJV3xOPz+/UvsutW3bVp9++qkSEhLk43Nl3+5atmypo0ePllju9/sxdu7cqfr161/R+S8mNTVV77//vgYOHCgvLya2AgAAAPAs/JQDwGnOnDmj66+/Xu+++662bdum5ORkffzxx3r++ec1YMAASVKvXr3UuXNnDRw4UN9++60OHjyotWvX6vHHH9fGjRsve6yEhAStW7dOBw8e1OnTp2Wz2TR27FidPXtWd9xxhzZs2KD9+/frm2++0ahRoy574/Du3burW7duGjRokJYtW6bk5GQtWbJES5culSRNmjRJa9eu1bhx45SUlKR9+/bpiy++KPNG53a7XSdOnFBKSop27dqlt956S126dFF4eLhjQ3cAAAAA8CTMlALgNCEhIerUqZP+9a9/af/+/SoqKlJ8fLxGjx6tv/3tb5LOLZX7+uuv9fjjj2vUqFE6deqUYmJi1K1bN0VHR1/2WI888ohGjBihpk2bKi8vT8nJyUpISNCaNWs0adIk3XjjjSooKFDt2rXVt2/fMs08+vTTT/XII4/ojjvuUE5OjurXr+8oilq2bKmVK1fq8ccf13XXXSe73a569eppyJAhZbpWmZmZio2NlcViUVhYmBo1aqQRI0bowQcfVFhYWJnOBQAAAAAVgcX+6y66AAAAAAAAgIuwfA8AAAAAAAAuRykFAAAAAAAAl6OUAgAAAAAAgMtRSgEAAAAAAMDlKKUAAAAAAADgcpRSAAAAAAAAcDlKKQAAAAAAALgcpRQAAAAAAABcjlIKAAAAAAAALkcpBQAAAAAAAJejlAIAAAAAAIDLUUoBAAAAAADA5f4fXPOjT6YRgRQAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 1200x800 with 4 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def analyze_text_statistics(sentences):\n",
|
|
" stats = []\n",
|
|
" for i, sent in enumerate(sentences):\n",
|
|
" doc = nlp(sent)\n",
|
|
" words = [token.text for token in doc if not token.is_space]\n",
|
|
" alpha_words = [token.text for token in doc if token.is_alpha]\n",
|
|
" \n",
|
|
" stats.append({\n",
|
|
" 'sentence_id': i,\n",
|
|
" 'sentence': sent,\n",
|
|
" 'char_length': len(sent),\n",
|
|
" 'word_count': len(words),\n",
|
|
" 'alpha_word_count': len(alpha_words),\n",
|
|
" 'avg_word_length': np.mean([len(word) for word in alpha_words]) if alpha_words else 0,\n",
|
|
" 'has_punctuation': any(token.is_punct for token in doc),\n",
|
|
" 'is_empty': len(sent.strip()) == 0\n",
|
|
" })\n",
|
|
" \n",
|
|
" return pd.DataFrame(stats)\n",
|
|
"\n",
|
|
"stats_df = analyze_text_statistics(test_sentences)\n",
|
|
"display(stats_df)\n",
|
|
"\n",
|
|
"# Visualize basic statistics\n",
|
|
"fig, axes = plt.subplots(2, 2, figsize=(12, 8))\n",
|
|
"\n",
|
|
"# Character length distribution\n",
|
|
"axes[0,0].bar(range(len(stats_df)), stats_df['char_length'])\n",
|
|
"axes[0,0].set_title('Character Length by Sentence')\n",
|
|
"axes[0,0].set_xlabel('Sentence ID')\n",
|
|
"axes[0,0].set_ylabel('Characters')\n",
|
|
"\n",
|
|
"# Word count distribution\n",
|
|
"axes[0,1].bar(range(len(stats_df)), stats_df['word_count'])\n",
|
|
"axes[0,1].set_title('Word Count by Sentence')\n",
|
|
"axes[0,1].set_xlabel('Sentence ID')\n",
|
|
"axes[0,1].set_ylabel('Words')\n",
|
|
"\n",
|
|
"# Average word length\n",
|
|
"axes[1,0].bar(range(len(stats_df)), stats_df['avg_word_length'])\n",
|
|
"axes[1,0].set_title('Average Word Length')\n",
|
|
"axes[1,0].set_xlabel('Sentence ID')\n",
|
|
"axes[1,0].set_ylabel('Characters')\n",
|
|
"\n",
|
|
"# Sentence type breakdown\n",
|
|
"types = ['With Punctuation' if x else 'No Punctuation' for x in stats_df['has_punctuation']]\n",
|
|
"type_counts = pd.Series(types).value_counts()\n",
|
|
"axes[1,1].pie(type_counts.values, labels=type_counts.index, autopct='%1.1f%%')\n",
|
|
"axes[1,1].set_title('Punctuation Distribution')\n",
|
|
"\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "5e488a878a5cfccb",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-11-23T13:55:23.734853Z",
|
|
"start_time": "2025-11-23T13:55:22.744266Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Linguistic Analysis\n",
|
|
"============================================================\n",
|
|
"\n",
|
|
" 1. ORIGINAL: 'The cat sat on the mat.'\n",
|
|
" Direct: 'the cat sat on the mat.'\n",
|
|
" Semantic: 'cat sit mat'\n",
|
|
" Syntactic: 'the cat sit on the mat .'\n",
|
|
" Tokens: 7 | Alpha: 6 | Stopwords: 3 | Punctuation: 1\n",
|
|
" POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
" 2. ORIGINAL: 'The cat sat on the mat'\n",
|
|
" Direct: 'the cat sat on the mat'\n",
|
|
" Semantic: 'cat sit mat'\n",
|
|
" Syntactic: 'the cat sit on the mat'\n",
|
|
" Tokens: 6 | Alpha: 6 | Stopwords: 3 | Punctuation: 0\n",
|
|
" POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1}\n",
|
|
"\n",
|
|
" 3. ORIGINAL: 'The cat sat on the mat.'\n",
|
|
" Direct: 'the cat sat on the mat.'\n",
|
|
" Semantic: 'cat sit mat'\n",
|
|
" Syntactic: 'the cat sit on the mat .'\n",
|
|
" Tokens: 12 | Alpha: 6 | Stopwords: 3 | Punctuation: 1\n",
|
|
" POS: {'DET': 2, 'SPACE': 5, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
" 4. ORIGINAL: 'On the mat, the cat was sitting.'\n",
|
|
" Direct: 'on the mat, the cat was sitting.'\n",
|
|
" Semantic: 'mat cat sit'\n",
|
|
" Syntactic: 'on the mat , the cat be sit .'\n",
|
|
" Tokens: 9 | Alpha: 7 | Stopwords: 4 | Punctuation: 2\n",
|
|
" POS: {'ADP': 1, 'DET': 2, 'NOUN': 2, 'PUNCT': 2, 'AUX': 1, 'VERB': 1}\n",
|
|
"\n",
|
|
" 5. ORIGINAL: 'The feline rested on the rug.'\n",
|
|
" Direct: 'the feline rested on the rug.'\n",
|
|
" Semantic: 'feline rest rug'\n",
|
|
" Syntactic: 'the feline rest on the rug .'\n",
|
|
" Tokens: 7 | Alpha: 6 | Stopwords: 3 | Punctuation: 1\n",
|
|
" POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
" 6. ORIGINAL: 'The quick brown fox jumps over the lazy dog.'\n",
|
|
" Direct: 'the quick brown fox jumps over the lazy dog.'\n",
|
|
" Semantic: 'quick brown fox jump lazy dog'\n",
|
|
" Syntactic: 'the quick brown fox jump over the lazy dog .'\n",
|
|
" Tokens: 10 | Alpha: 9 | Stopwords: 3 | Punctuation: 1\n",
|
|
" POS: {'DET': 2, 'ADJ': 3, 'PROPN': 1, 'VERB': 1, 'ADP': 1, 'NOUN': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
" 7. ORIGINAL: 'Over the lazy dog jumps the quick brown fox.'\n",
|
|
" Direct: 'over the lazy dog jumps the quick brown fox.'\n",
|
|
" Semantic: 'lazy dog jump quick brown fox'\n",
|
|
" Syntactic: 'over the lazy dog jump the quick brown fox .'\n",
|
|
" Tokens: 10 | Alpha: 9 | Stopwords: 3 | Punctuation: 1\n",
|
|
" POS: {'ADP': 1, 'DET': 2, 'ADJ': 3, 'NOUN': 1, 'VERB': 1, 'PROPN': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
" 8. ORIGINAL: 'The dog ran in the park.'\n",
|
|
" Direct: 'the dog ran in the park.'\n",
|
|
" Semantic: 'dog run park'\n",
|
|
" Syntactic: 'the dog run in the park .'\n",
|
|
" Tokens: 7 | Alpha: 6 | Stopwords: 3 | Punctuation: 1\n",
|
|
" POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
" 9. ORIGINAL: 'I love programming.'\n",
|
|
" Direct: 'i love programming.'\n",
|
|
" Semantic: 'love programming'\n",
|
|
" Syntactic: 'i love programming .'\n",
|
|
" Tokens: 4 | Alpha: 3 | Stopwords: 1 | Punctuation: 1\n",
|
|
" POS: {'PRON': 1, 'VERB': 1, 'NOUN': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
"10. ORIGINAL: 'She enjoys reading books.'\n",
|
|
" Direct: 'she enjoys reading books.'\n",
|
|
" Semantic: 'enjoy read book'\n",
|
|
" Syntactic: 'she enjoy read book .'\n",
|
|
" Tokens: 5 | Alpha: 4 | Stopwords: 1 | Punctuation: 1\n",
|
|
" POS: {'PRON': 1, 'VERB': 2, 'NOUN': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
"11. ORIGINAL: 'Short.'\n",
|
|
" Direct: 'short.'\n",
|
|
" Semantic: 'short'\n",
|
|
" Syntactic: 'short .'\n",
|
|
" Tokens: 2 | Alpha: 1 | Stopwords: 0 | Punctuation: 1\n",
|
|
" POS: {'ADJ': 1, 'PUNCT': 1}\n",
|
|
"\n",
|
|
"12. ORIGINAL: 'A B C D E F G'\n",
|
|
" Direct: 'a b c d e f g'\n",
|
|
" Semantic: 'b c d e f g'\n",
|
|
" Syntactic: 'a b c d e f g'\n",
|
|
" Tokens: 7 | Alpha: 7 | Stopwords: 1 | Punctuation: 0\n",
|
|
" POS: {'DET': 1, 'NOUN': 2, 'PROPN': 4}\n",
|
|
"\n",
|
|
"13. ORIGINAL: ''\n",
|
|
" Direct: ''\n",
|
|
" Semantic: ''\n",
|
|
" Syntactic: ''\n",
|
|
" Tokens: 0 | Alpha: 0 | Stopwords: 0 | Punctuation: 0\n",
|
|
" POS: {}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"\n",
|
|
"class TextPreprocessor:\n",
|
|
" def __init__(self):\n",
|
|
" self.nlp = spacy.load(\"en_core_web_lg\")\n",
|
|
" \n",
|
|
" def extract_linguistic_features(self, text):\n",
|
|
" \"\"\" Extract linguistic features \"\"\"\n",
|
|
" doc = self.nlp(text)\n",
|
|
" \n",
|
|
" features = {\n",
|
|
" 'tokens': [token.text for token in doc],\n",
|
|
" 'lemmas': [token.lemma_ for token in doc if token.is_alpha],\n",
|
|
" 'pos_tags': [token.pos_ for token in doc],\n",
|
|
" 'dep_tags': [token.dep_ for token in doc],\n",
|
|
" 'is_stop': [token.is_stop for token in doc],\n",
|
|
" 'is_alpha': [token.is_alpha for token in doc],\n",
|
|
" 'is_punct': [token.is_punct for token in doc]\n",
|
|
" }\n",
|
|
" \n",
|
|
" return features, doc\n",
|
|
" \n",
|
|
" def direct_preprocessing(self, text):\n",
|
|
" \"\"\" For direct copy detection \"\"\"\n",
|
|
" return text.lower().strip()\n",
|
|
" \n",
|
|
" def semantic_preprocessing(self, text):\n",
|
|
" \"\"\" For semantic similarity \"\"\"\n",
|
|
" # Remove noise like stop words\n",
|
|
" doc = self.nlp(text)\n",
|
|
" processed_tokens = []\n",
|
|
" for token in doc:\n",
|
|
" if not token.is_punct and not token.is_space and token.is_alpha and not token.is_stop:\n",
|
|
" processed_tokens.append(token.lemma_.lower())\n",
|
|
" return \" \".join(processed_tokens)\n",
|
|
" \n",
|
|
" def syntactic_preprocessing(self, text):\n",
|
|
" \"\"\" For syntactic similarity \"\"\"\n",
|
|
" # Normalize\n",
|
|
" doc = self.nlp(text)\n",
|
|
" processed_tokens = []\n",
|
|
" for token in doc:\n",
|
|
" if token.is_space:\n",
|
|
" continue\n",
|
|
" elif token.is_punct:\n",
|
|
" processed_tokens.append(token.text)\n",
|
|
" elif token.is_stop:\n",
|
|
" processed_tokens.append(token.lemma_.lower())\n",
|
|
" else:\n",
|
|
" processed_tokens.append(token.lemma_.lower())\n",
|
|
" return \" \".join(processed_tokens)\n",
|
|
"\n",
|
|
"\n",
|
|
"# Initialize preprocessor\n",
|
|
"preprocessor = TextPreprocessor()\n",
|
|
"\n",
|
|
"# Analyze all sentences\n",
|
|
"print(\"Linguistic Analysis\")\n",
|
|
"print(\"=\" * 60)\n",
|
|
"\n",
|
|
"for i, sentence in enumerate(test_sentences):\n",
|
|
" print(f\"\\n{i+1:2d}. {'ORIGINAL: ':<20}'{sentence}'\")\n",
|
|
" features, doc = preprocessor.extract_linguistic_features(sentence)\n",
|
|
" \n",
|
|
" print(f\" {'Direct: ':<20}'{preprocessor.direct_preprocessing(sentence)}'\")\n",
|
|
" print(f\" {'Semantic: ':<20}'{preprocessor.semantic_preprocessing(sentence)}'\")\n",
|
|
" print(f\" {'Syntactic: ':<20}'{preprocessor.syntactic_preprocessing(sentence)}'\")\n",
|
|
" \n",
|
|
" # Basic counts\n",
|
|
" print(f\" {'Tokens: ':<20}{len(features['tokens']):2d} | \"\n",
|
|
" f\"Alpha: {sum(features['is_alpha']):2d} | \"\n",
|
|
" f\"Stopwords: {sum(features['is_stop']):2d} | \"\n",
|
|
" f\"Punctuation: {sum(features['is_punct']):2d}\")\n",
|
|
" \n",
|
|
" # POS distribution\n",
|
|
" pos_counts = Counter(features['pos_tags'])\n",
|
|
" print(f\" {'POS:':<20}{dict(pos_counts)}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "83fc18c9de2e354",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-11-23T13:55:33.587912Z",
|
|
"start_time": "2025-11-23T13:55:33.565711Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"Sentence 0: 'The cat sat on the mat.'\n",
|
|
"Dependency Parse:\n",
|
|
"--------------------------------------------------\n",
|
|
"The det cat []\n",
|
|
"cat nsubj sat ['The']\n",
|
|
"sat ROOT sat ['cat', 'on', '.']\n",
|
|
"on prep sat ['mat']\n",
|
|
"the det mat []\n",
|
|
"mat pobj on ['the']\n",
|
|
". punct sat []\n",
|
|
"\n",
|
|
"Dependency Tree Visualization - Sentence 0:\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<span class=\"tex2jax_ignore\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:lang=\"en\" id=\"31566b7b81444fdc9677ac9414b9a6d5-0\" class=\"displacy\" width=\"770\" height=\"257.0\" direction=\"ltr\" style=\"max-width: none; height: 257.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr\">\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"50\">The</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"50\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"170\">cat</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"170\">NOUN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"290\">sat</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"290\">VERB</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"410\">on</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"410\">ADP</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"530\">the</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"530\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"650\">mat.</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"650\">NOUN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-31566b7b81444fdc9677ac9414b9a6d5-0-0\" stroke-width=\"2px\" d=\"M70,122.0 C70,62.0 165.0,62.0 165.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-0\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M70,124.0 L62,112.0 78,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-31566b7b81444fdc9677ac9414b9a6d5-0-1\" stroke-width=\"2px\" d=\"M190,122.0 C190,62.0 285.0,62.0 285.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-1\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">nsubj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M190,124.0 L182,112.0 198,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-31566b7b81444fdc9677ac9414b9a6d5-0-2\" stroke-width=\"2px\" d=\"M310,122.0 C310,62.0 405.0,62.0 405.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-2\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">prep</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M405.0,124.0 L413.0,112.0 397.0,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-31566b7b81444fdc9677ac9414b9a6d5-0-3\" stroke-width=\"2px\" d=\"M550,122.0 C550,62.0 645.0,62.0 645.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-3\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M550,124.0 L542,112.0 558,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-31566b7b81444fdc9677ac9414b9a6d5-0-4\" stroke-width=\"2px\" d=\"M430,122.0 C430,2.0 650.0,2.0 650.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-4\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">pobj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M650.0,124.0 L658.0,112.0 642.0,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"</svg></span>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"======================================================================\n",
|
|
"\n",
|
|
"\n",
|
|
"Sentence 3: 'On the mat, the cat was sitting.'\n",
|
|
"Dependency Parse:\n",
|
|
"--------------------------------------------------\n",
|
|
"On prep sitting ['mat']\n",
|
|
"the det mat []\n",
|
|
"mat pobj On ['the']\n",
|
|
", punct sitting []\n",
|
|
"the det cat []\n",
|
|
"cat nsubj sitting ['the']\n",
|
|
"was aux sitting []\n",
|
|
"sitting ROOT sitting ['On', ',', 'cat', 'was', '.']\n",
|
|
". punct sitting []\n",
|
|
"\n",
|
|
"Dependency Tree Visualization - Sentence 3:\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<span class=\"tex2jax_ignore\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:lang=\"en\" id=\"a1bb7d7b7b9a4d0f851e850779d0d79e-0\" class=\"displacy\" width=\"890\" height=\"317.0\" direction=\"ltr\" style=\"max-width: none; height: 317.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr\">\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"50\">On</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"50\">ADP</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"170\">the</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"170\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"290\">mat,</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"290\">NOUN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"410\">the</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"410\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"530\">cat</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"530\">NOUN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"650\">was</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"650\">AUX</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"770\">sitting.</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"770\">VERB</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-0\" stroke-width=\"2px\" d=\"M70,182.0 C70,2.0 770.0,2.0 770.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-0\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">prep</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M70,184.0 L62,172.0 78,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-1\" stroke-width=\"2px\" d=\"M190,182.0 C190,122.0 280.0,122.0 280.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-1\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M190,184.0 L182,172.0 198,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-2\" stroke-width=\"2px\" d=\"M70,182.0 C70,62.0 285.0,62.0 285.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-2\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">pobj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M285.0,184.0 L293.0,172.0 277.0,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-3\" stroke-width=\"2px\" d=\"M430,182.0 C430,122.0 520.0,122.0 520.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-3\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M430,184.0 L422,172.0 438,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-4\" stroke-width=\"2px\" d=\"M550,182.0 C550,62.0 765.0,62.0 765.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-4\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">nsubj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M550,184.0 L542,172.0 558,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-5\" stroke-width=\"2px\" d=\"M670,182.0 C670,122.0 760.0,122.0 760.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-5\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">aux</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M670,184.0 L662,172.0 678,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"</svg></span>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"======================================================================\n",
|
|
"\n",
|
|
"\n",
|
|
"Sentence 4: 'The feline rested on the rug.'\n",
|
|
"Dependency Parse:\n",
|
|
"--------------------------------------------------\n",
|
|
"The det feline []\n",
|
|
"feline nsubj rested ['The']\n",
|
|
"rested ROOT rested ['feline', 'on', '.']\n",
|
|
"on prep rested ['rug']\n",
|
|
"the det rug []\n",
|
|
"rug pobj on ['the']\n",
|
|
". punct rested []\n",
|
|
"\n",
|
|
"Dependency Tree Visualization - Sentence 4:\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<span class=\"tex2jax_ignore\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:lang=\"en\" id=\"9408412530c948cfb4610fe3e9526353-0\" class=\"displacy\" width=\"770\" height=\"257.0\" direction=\"ltr\" style=\"max-width: none; height: 257.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr\">\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"50\">The</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"50\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"170\">feline</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"170\">NOUN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"290\">rested</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"290\">VERB</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"410\">on</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"410\">ADP</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"530\">the</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"530\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"167.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"650\">rug.</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"650\">NOUN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-9408412530c948cfb4610fe3e9526353-0-0\" stroke-width=\"2px\" d=\"M70,122.0 C70,62.0 165.0,62.0 165.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-9408412530c948cfb4610fe3e9526353-0-0\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M70,124.0 L62,112.0 78,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-9408412530c948cfb4610fe3e9526353-0-1\" stroke-width=\"2px\" d=\"M190,122.0 C190,62.0 285.0,62.0 285.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-9408412530c948cfb4610fe3e9526353-0-1\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">nsubj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M190,124.0 L182,112.0 198,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-9408412530c948cfb4610fe3e9526353-0-2\" stroke-width=\"2px\" d=\"M310,122.0 C310,62.0 405.0,62.0 405.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-9408412530c948cfb4610fe3e9526353-0-2\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">prep</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M405.0,124.0 L413.0,112.0 397.0,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-9408412530c948cfb4610fe3e9526353-0-3\" stroke-width=\"2px\" d=\"M550,122.0 C550,62.0 645.0,62.0 645.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-9408412530c948cfb4610fe3e9526353-0-3\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M550,124.0 L542,112.0 558,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-9408412530c948cfb4610fe3e9526353-0-4\" stroke-width=\"2px\" d=\"M430,122.0 C430,2.0 650.0,2.0 650.0,122.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-9408412530c948cfb4610fe3e9526353-0-4\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">pobj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M650.0,124.0 L658.0,112.0 642.0,112.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"</svg></span>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"======================================================================\n",
|
|
"\n",
|
|
"\n",
|
|
"Sentence 5: 'The quick brown fox jumps over the lazy dog.'\n",
|
|
"Dependency Parse:\n",
|
|
"--------------------------------------------------\n",
|
|
"The det fox []\n",
|
|
"quick amod fox []\n",
|
|
"brown amod fox []\n",
|
|
"fox nsubj jumps ['The', 'quick', 'brown']\n",
|
|
"jumps ROOT jumps ['fox', 'over', '.']\n",
|
|
"over prep jumps ['dog']\n",
|
|
"the det dog []\n",
|
|
"lazy amod dog []\n",
|
|
"dog pobj over ['the', 'lazy']\n",
|
|
". punct jumps []\n",
|
|
"\n",
|
|
"Dependency Tree Visualization - Sentence 5:\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<span class=\"tex2jax_ignore\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:lang=\"en\" id=\"12329dfbfcb74e6586d002c19849a58e-0\" class=\"displacy\" width=\"1130\" height=\"317.0\" direction=\"ltr\" style=\"max-width: none; height: 317.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr\">\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"50\">The</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"50\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"170\">quick</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"170\">ADJ</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"290\">brown</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"290\">ADJ</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"410\">fox</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"410\">PROPN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"530\">jumps</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"530\">VERB</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"650\">over</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"650\">ADP</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"770\">the</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"770\">DET</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"890\">lazy</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"890\">ADJ</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<text class=\"displacy-token\" fill=\"currentColor\" text-anchor=\"middle\" y=\"227.0\">\n",
|
|
" <tspan class=\"displacy-word\" fill=\"currentColor\" x=\"1010\">dog.</tspan>\n",
|
|
" <tspan class=\"displacy-tag\" dy=\"2em\" fill=\"currentColor\" x=\"1010\">NOUN</tspan>\n",
|
|
"</text>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-0\" stroke-width=\"2px\" d=\"M70,182.0 C70,2.0 410.0,2.0 410.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-0\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M70,184.0 L62,172.0 78,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-1\" stroke-width=\"2px\" d=\"M190,182.0 C190,62.0 405.0,62.0 405.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-1\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">amod</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M190,184.0 L182,172.0 198,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-2\" stroke-width=\"2px\" d=\"M310,182.0 C310,122.0 400.0,122.0 400.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-2\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">amod</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M310,184.0 L302,172.0 318,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-3\" stroke-width=\"2px\" d=\"M430,182.0 C430,122.0 520.0,122.0 520.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-3\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">nsubj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M430,184.0 L422,172.0 438,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-4\" stroke-width=\"2px\" d=\"M550,182.0 C550,122.0 640.0,122.0 640.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-4\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">prep</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M640.0,184.0 L648.0,172.0 632.0,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-5\" stroke-width=\"2px\" d=\"M790,182.0 C790,62.0 1005.0,62.0 1005.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-5\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">det</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M790,184.0 L782,172.0 798,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-6\" stroke-width=\"2px\" d=\"M910,182.0 C910,122.0 1000.0,122.0 1000.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-6\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">amod</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M910,184.0 L902,172.0 918,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"\n",
|
|
"<g class=\"displacy-arrow\">\n",
|
|
" <path class=\"displacy-arc\" id=\"arrow-12329dfbfcb74e6586d002c19849a58e-0-7\" stroke-width=\"2px\" d=\"M670,182.0 C670,2.0 1010.0,2.0 1010.0,182.0\" fill=\"none\" stroke=\"currentColor\"/>\n",
|
|
" <text dy=\"1.25em\" style=\"font-size: 0.8em; letter-spacing: 1px\">\n",
|
|
" <textPath xlink:href=\"#arrow-12329dfbfcb74e6586d002c19849a58e-0-7\" class=\"displacy-label\" startOffset=\"50%\" side=\"left\" fill=\"currentColor\" text-anchor=\"middle\">pobj</textPath>\n",
|
|
" </text>\n",
|
|
" <path class=\"displacy-arrowhead\" d=\"M1010.0,184.0 L1018.0,172.0 1002.0,172.0\" fill=\"currentColor\"/>\n",
|
|
"</g>\n",
|
|
"</svg></span>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"======================================================================\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"\n",
|
|
"def analyze_dependency_structure(text, sentence_id):\n",
|
|
" \"\"\"Analyze and display dependency parse information\"\"\"\n",
|
|
" if not text.strip():\n",
|
|
" print(f\"Sentence {sentence_id}: [EMPTY]\")\n",
|
|
" return None\n",
|
|
" \n",
|
|
" doc = nlp(text)\n",
|
|
" \n",
|
|
" print(f\"\\nSentence {sentence_id}: '{text}'\")\n",
|
|
" print(\"Dependency Parse:\")\n",
|
|
" print(\"-\" * 50)\n",
|
|
" \n",
|
|
" # Extract dependency relationships\n",
|
|
" dependencies = []\n",
|
|
" for token in doc:\n",
|
|
" dependencies.append({\n",
|
|
" 'token': token.text,\n",
|
|
" 'lemma': token.lemma_,\n",
|
|
" 'pos': token.pos_,\n",
|
|
" 'dep': token.dep_,\n",
|
|
" 'head': token.head.text,\n",
|
|
" 'children': [child.text for child in token.children]\n",
|
|
" })\n",
|
|
" print(f\"{token.text:<12} {token.dep_:<12} {token.head.text:<12} {[child.text for child in token.children]}\")\n",
|
|
" \n",
|
|
" return dependencies\n",
|
|
"\n",
|
|
"def visualize_dependency_tree(text, sentence_id):\n",
|
|
" \"\"\"Create dependency tree visualization\"\"\"\n",
|
|
" if not text.strip():\n",
|
|
" return\n",
|
|
" \n",
|
|
" doc = nlp(text)\n",
|
|
" \n",
|
|
" # Use displacy for visualization\n",
|
|
" from spacy import displacy\n",
|
|
" \n",
|
|
" print(f\"\\nDependency Tree Visualization - Sentence {sentence_id}:\")\n",
|
|
" html = displacy.render(doc, style=\"dep\", jupyter=True, options={'distance': 120})\n",
|
|
" \n",
|
|
" return html\n",
|
|
"\n",
|
|
"# Analyze dependency structures for key sentence pairs\n",
|
|
"key_pairs = [\n",
|
|
" (0, \"The cat sat on the mat.\"),\n",
|
|
" (3, \"On the mat, the cat was sitting.\"),\n",
|
|
" (4, \"The feline rested on the rug.\"),\n",
|
|
" (5, \"The quick brown fox jumps over the lazy dog.\")\n",
|
|
"]\n",
|
|
"\n",
|
|
"for sentence_id, sentence in key_pairs:\n",
|
|
" deps = analyze_dependency_structure(sentence, sentence_id)\n",
|
|
" visualize_dependency_tree(sentence, sentence_id)\n",
|
|
" print(\"\\n\" + \"=\"*70 + \"\\n\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "e413238c1af12f62",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2025-11-23T13:56:21.733459Z",
|
|
"start_time": "2025-11-23T13:56:21.702279Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"VOCABULARY ANALYSIS\n",
|
|
"==================================================\n",
|
|
"Total unique words: 35\n",
|
|
"Total unique lemmas: 34\n",
|
|
"Total content words: 21\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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AlKgQAEZMmRImvfaxx9/LGFhYVKoUCHx8PCQkJCQdA9DFBsbK/Xq1RMvLy/JmzevVKhQgV3mAdjVw7ROkR35/P7774u/v7+4u7tLkyZN5MCBA8a48PBwWbFihRw9etRYl0h9TqzExEQZPny4lC1bVtzc3KR48eIyZMiQu2Z5yndINzc3qVKliqxevdoYM2LECBk8eLCIiAQEBBjLSy/XRURKlCghxYsXT/d7cd26dSUsLCzdeVWqVDG2dj9z5oy88MIL4uPjI+7u7lK9enX54osvrG5z5MgRsVgs8vHHH8v48eOlTJky4ubmJn/88YeI3G7O16xZU9zd3aVMmTIyffr0dOslL5FlFLChPn36aOqXVXJysjZu3FgtFov26NFDJ02apC1btlQR0QEDBljdVkQ0MDBQCxcurO+8846OHj1aS5YsqR4eHrpz584M1ZEnTx7t0qVLuvPKli2rkZGRaabPnDlTRUR///130/tu2LChVqlSRfft26ciouvWrTPmtW7dWiMiInT9+vUqIrpgwQJj3q5duzRPnjxatGhRfffdd3XUqFEaEBCgbm5uumXLFmPcG2+8oRaLRXv27KmffvqpjhkzRtu3b6+jRo1SVdXNmzdrs2bNVET0q6++Mi53s3btWhURfeedd0z/rxSnTp1SHx8fzZcvn7755ps6duxYrV69urq4uOjixYuNcSn/Y1BQkIaGhuonn3yi/fr1U4vFou3atdMOHTpoZGSkTp48WTt16qQioiNHjrRalohotWrVtHjx4jpq1CgdNWqU5s+fX0uUKKGTJk3SypUr65gxY/Stt95SV1dXbdSokdXtZ82apSKiNWvW1HHjxunQoUPVw8NDS5UqpefPnzfGdenSRd3d3bVKlSravXt3nTp1qj7zzDMqIjplypR7PiahoaFasmRJ4/qxY8dURHTz5s361ltvaXBwsDFvx44dKiI6evToTD2elStX1qCgIB07dqzGxMTolStXdM2aNeri4qKBgYE6duxYffPNNzV//vxapUoVq7pSnusmTZro5MmTdfLkydq3b19t27btPf9HAA8vsplsfhizOeU5N/Pll1+qxWLRxx9/XCdOnKijR4/WUqVKqZeXlx4+fDhNLZUrV9aXXnpJJ0+erGFhYSoiOmvWLPXz89PBgwfrxIkTtUqVKpojRw49dOhQmv85KChIH3/8cavH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vviifPnll1ZngwfwaCObbyObbS+7s9lMyu7sRYoUkaZNm6a5hIeHZ1st97Jo0SJxd3eXNWvWSPfu3SUyMlKaNm2a7lgXFxdp0qSJjB07Vv744w95//335Ycffkj3UDUAkNUetnUKR8jnu61PlClTRs6dOydNmjRJN9fS2zI+s8syU69ePTl37px89913cubMGWOLdJHb34sPHjwoK1eulGvXrqX5Xrx///40z8v9Plbe3t7i4eFx39+LyUtkFRrpyFJPPPGEJCUlyaRJk6ymjxs3TiwWi0RGRlpNj4uLszoW5PHjx2XZsmXSvHlzm2211KZNGzl9+rQsXrzYmPbPP//IggULpGXLlukeT+1e9zd8+HCZMmWK1fHOUsuRI4c0b95cli1bJkeOHDGmnz59WubMmSP16tUzdiP7999/rW6bN29eKVu2rNXuaXny5BERkQsXLtyzvty5c8vrr78ue/bskddffz3dX6C//vpr2bp1q4jcfs62bt0qcXFxxvwrV67IjBkzpFSpUmmOy20vNWrUkCJFisi0adOsHptVq1bJnj17JCoqyqbLq1evniQlJcnHH38s5cqVs1rRCwsLk8uXL8uUKVPExcXFqsn+oI9n0aJFJSgoSL744gur3btjY2PTHHPvzteOi4uLVKtWTUQk3d0bATyayObbyGbby+5sNhMRESGenp7ywQcfyM2bN9PMt9UhBGwhR44cYrFYrJo2R44ckaVLl1qNO3fuXJrbBgUFiQg5D8A+HrZ1CkfI5zx58qQ55JqIyLPPPisnTpyQTz/9NM28a9euyZUrVzK1LJH7W3dJkdIcHz16tOTOndvIIRGRWrVqSc6cOeXDDz+0Gity+7E6deqUzJs3z5h269YtmThxouTNm1caNmxoutwcOXJIRESELF26VI4dO2ZM37Nnj6xZs8ZqLHmJrJTT3gXg4dayZUtp1KiRvPnmm3LkyBGpXr26rF27VpYtWyYDBgywOvmFyO1jbkVEREi/fv3Ezc1NpkyZIiIiI0eOvOeyvv/+e/ntt99EROTmzZvy+++/y3vvvSciIk8++aTRUGzTpo3UqVNHunXrJn/88YcULlxYpkyZIklJSfe1nDvlz5/faou0u3nvvfckNjZW6tWrJ71795acOXPK9OnTJTEx0QgaEZHKlStLeHi4hISESMGCBSU+Pl4WLlwoffv2Ncak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6/PvfjjqekYKZ8tvVTLcVpwlv1O/9n7//XetVq2axsfH68GDB/X333/X8uXLa82aNfX06dNpxsNxkTlZg8yxPTLHtvWoOtdneUREhD7++OMOU096UmpbunSp1q9fX4sVK6YtW7bUoUOH2rXuvXv3aqdOnbRixYrq5uam33zzjaqqQ69zqKqyRfp9slgs8t1338kzzzwjtWvXlv79+0uePHkkIiJC9u3bZ+/yREQkPj5enn/+eWnRooVERETIli1bpGbNmnLmzBl7l2ZQVcmRI4dUqVJFrl69KsWKFZO1a9fKv//+Kzlz5nTI4yL17t1bateuLbGxsVK3bl159tlnRcT+vzbmyJFDRETy588vs2fPFjc3N3nuuefkt99+E1VNswuuvetNqeett96SESNGSGhoqEycOFE6dOggb7/9tnz00UfGOHWArQyqVKkiPj4+8sEHH8iPP/4oIrdry5cvn9UWyfZ+XO9ksVhk8eLFEhERIePHj5fBgwdLu3bt5MCBA+Li4pIt9d75/BUqVEguXrwoly5dMl63zuLq1aty8uRJyZ8/v/z4448SHR0t7du3l9GjR8ugQYPk+++/t3eJuAfy2zYcNb9//fVXWbJkieTJk8eoM0+ePBIWFiaHDh2SyZMny61bt8TFxcUh1zFEHHc9I4Wz5bcIGZ5ZzprfKa/Rzz77TN58802pWrWqBAcHS+nSpaVq1aqydetWOXXqlLz22mtW4+G4yJysQ+bYHplju3pEHPez/M7HI+UwTr1795Zz587J9u3b0x3nCCwWi6xevVrat28vrVu3lrVr10rp0qVlzJgx8t1339mtrvLly0vLli1l7969UqxYMeM9nSNHDod8HA326d87n8uXL+sTTzyhH330kaqqnjhxQkuWLKm9evWyc2W37dixQ9etW6cffPCBMW3//v0aGBioISEhevbsWTtWl9bZs2d19+7dunDhQg0LC9MnnnhC//nnH1X979enxMREe5aoqqo3btzQpKQkHT58uHbr1k0bNGigL7zwgp45c0ZV7fNLWepfDFP/fenSJS1XrpwGBwfrjh07jHlLlizJ7hLv6tSpU1qjRg2dPXu2Me348eM6fPhw9fDw0E8++cSY7gi/6K5atUojIyO1efPm+vPPP+u6dev0sccec8itkFMer3///Vd79uypX3zxhV6/fl2XLVumkZGRWrVqVd23b5+qZs8WBlu2bNHZs2frkSNHdPv27Vq3bl398ccfTWu3t7s9Ls2bN9ciRYqou7u79u/fX1esWKFJSUlapUoV/fDDD7O5SmQU+W1bjpjf58+fV1XV+Ph4PXz4sKqqXr9+XTt06KChoaE6ceJEqy0Yr1y5kq31mXHE9Yz0OFt+q5LhmeWM+a16e4+xl19+WX19fbVBgwbG9GvXrqmq6qxZs7R8+fL6999/O1TdMEfm2BaZk3XIHNtwhs/yNWvWWD0u58+f1/Lly+srr7xil3ruJTk5Wa9du6bPP/+8Dh8+XFVvP/fFihWzW80pz92NGzd069at+vXXX2vPnj01NDRUZ8yYYYxz1L17aKTfp3PnzmmpUqV0y5YteubMGS1WrJjVl/Avv/xSDx48aJfazp8/r0WLFlWLxaKDBg2ympfyZbx27drGLjD2kPJGOXfunF65ckUvXryoqrd3zfvqq680LCxMW7Roof/++6+qqk6cOFG//vprhwnGFB999JGGhYVp9+7djRUOVdWDBw9my26GKY/Hjz/+qDExMfrSSy/ptm3bjBW6lGZ6jRo1dP78+frGG29ojhw59MiRI1le2/04e/asFi5cWD/++GOr6ceOHdM6deqoxWLRCRMm2Km62+78sF61apVGRERoy5Yt9ZVXXtGgoCAdNmyYxsTE6IcffqgffvihDhkyRDdv3myniv+zdetWrVu3rjZp0kT3799vTN+wYYM+/vjjWrVqVWN6VoVScnKynj9/XkNCQrR48eJasmRJLVCggFosFo2MjNQPPvhAN23apH/88YeePHkyS2rIjNSPx5o1a3TVqlW6fPlyY9ry5cs1Li7O6jYNGza0WpGHYyK/H4wj53fqL/xnzpzRunXratOmTXXbtm1GzR06dNC6devqJ598oklJSfrWW29pixYtHKZZcCd7r2fcjTPktyoZ/iCcLb/Tewz27t2rr732mrq6uqb5oXvu3Llavnx5u36e4t7InOxF5jwYMufBOcNneer378aNG7VkyZJaqlQpnTx5su7YsUNVVRctWqSVKlVK833RkTz++OM6b948PX78eJrvQ8uWLdP/+7//y5Y6Uj6vV65cqT169DDWKf7880/t0qWLhoaG6syZM61qO3r0aLbUdr9opN+nW7duaYcOHXTUqFFaokQJffHFF4031OnTp7VTp046Z84cuzV+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",
|
|
"text/plain": [
|
|
"<Figure size 1500x500 with 3 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def analyze_vocabulary_distribution(sentences):\n",
|
|
" \"\"\"Analyze word frequencies and vocabulary across sentences\"\"\"\n",
|
|
" all_words = []\n",
|
|
" all_lemmas = []\n",
|
|
" content_words = []\n",
|
|
" \n",
|
|
" for sent in sentences:\n",
|
|
" doc = nlp(sent)\n",
|
|
" for token in doc:\n",
|
|
" if token.is_alpha and not token.is_space:\n",
|
|
" all_words.append(token.text.lower())\n",
|
|
" all_lemmas.append(token.lemma_.lower())\n",
|
|
" if not token.is_stop and token.pos_ in ['NOUN', 'VERB', 'ADJ', 'ADV']:\n",
|
|
" content_words.append(token.lemma_.lower())\n",
|
|
" \n",
|
|
" # Calculate frequencies\n",
|
|
" word_freq = Counter(all_words)\n",
|
|
" lemma_freq = Counter(all_lemmas)\n",
|
|
" content_freq = Counter(content_words)\n",
|
|
" \n",
|
|
" return word_freq, lemma_freq, content_freq\n",
|
|
"\n",
|
|
"word_freq, lemma_freq, content_freq = analyze_vocabulary_distribution(test_sentences)\n",
|
|
"\n",
|
|
"print(\"VOCABULARY ANALYSIS\")\n",
|
|
"print(\"=\" * 50)\n",
|
|
"print(f\"Total unique words: {len(word_freq)}\")\n",
|
|
"print(f\"Total unique lemmas: {len(lemma_freq)}\")\n",
|
|
"print(f\"Total content words: {len(content_freq)}\")\n",
|
|
"\n",
|
|
"# Plot most common words\n",
|
|
"fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
|
|
"\n",
|
|
"# Original words\n",
|
|
"common_words = word_freq.most_common(10)\n",
|
|
"axes[0].bar([w[0] for w in common_words], [w[1] for w in common_words])\n",
|
|
"axes[0].set_title('Top 10 Most Common Words')\n",
|
|
"axes[0].tick_params(axis='x', rotation=45)\n",
|
|
"\n",
|
|
"# Lemmas\n",
|
|
"common_lemmas = lemma_freq.most_common(10)\n",
|
|
"axes[1].bar([w[0] for w in common_lemmas], [w[1] for w in common_lemmas])\n",
|
|
"axes[1].set_title('Top 10 Most Common Lemmas')\n",
|
|
"axes[1].tick_params(axis='x', rotation=45)\n",
|
|
"\n",
|
|
"# Content words\n",
|
|
"common_content = content_freq.most_common(10)\n",
|
|
"axes[2].bar([w[0] for w in common_content], [w[1] for w in common_content])\n",
|
|
"axes[2].set_title('Top 10 Content Words')\n",
|
|
"axes[2].tick_params(axis='x', rotation=45)\n",
|
|
"\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"id": "6aff51eb71eb2238",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABaMAAAJOCAYAAACqfhu3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcbVJREFUeJzt3Xm4VWXZP/DvYTogk6IyKQo5hDMqyuuUVhSZaVaOWSKWTZAib6ZUimmKWvnTyjTtdegty6ws09QIh17ngXDI2VBJY3AEMQbPWb8/Tmw6AXoO7H32GT6f61rX5V577Wfde8E5+8vjvZ9VUxRFEQAAAAAAqKBO1S4AAAAAAID2z2Q0AAAAAAAVZzIaAAAAAICKMxkNAAAAAEDFmYwGAAAAAKDiTEYDAAAAAFBxJqMBAAAAAKg4k9EAAAAAAFScyWgAAAAAACrOZDQd2qmnnpqamppql0ErctRRR2Xo0KHVLuNt3Xrrrampqcmtt95atjEvv/zy1NTU5Nlnny3t22effbLPPvuU7RxJ8uyzz6ampiaXX355WcdtS2pqanLqqadWuwwA6HAqkaGoPPn82dI++bwy5HNoWSajaTeWf1gv37p3757BgwdnzJgx+d73vpeFCxdWu8SSN998M6eeemqTw8rycLN869q1a971rnflyCOPzN/+9rfKFkuLqa+vz09+8pOMGjUq/fr1S+/evbPlllvmyCOPzN13313t8irmD3/4Q0XC39ChQ1NTU5PRo0ev8vlLLrmk9DN1//33N3v8O++8M6eeempee+21tawUAFrOww8/nIMOOiibbrppunfvno022igf+MAH8v3vf7/apZXND3/4w4pPrMnnHYN8Xl7yOZAkNUVRFNUuAsrh8ssvz7hx43Laaadl2LBhWbZsWebMmZNbb70106ZNyyabbJJrr70222+/fek1b731Vt5666107969RWt96aWXsuGGG2bKlClN+pC/9dZb8973vjfHHntsdtlllyxbtiwzZszIxRdfnF69euXhhx/O4MGDK194B7Bs2bLU19entra2xc89YcKEXHDBBfnoRz+a973vfenSpUueeOKJ3HDDDfnkJz9Z+rtSX1+fpUuXplu3bunUqTz/T7Guri7Lli1LbW1t6dsCy7suytnhURRFlixZkq5du6Zz585JVrzvcn8cDR06NHPnzs3SpUvzwgsvZODAgY2e32effXLPPfdk8eLFue+++zJy5Mhmjf+d73wnJ5xwQmbNmtWsbp3FixenS5cu6dKlS7POBwBr684778x73/vebLLJJhk7dmwGDhyY2bNn5+67784zzzyTp59+utollsW2226bDTbYYKUMU84MJZ+3HPlcPm8q+RzaBj9ptDv77rtvow+tyZMn5+abb85HPvKRHHDAAXnsscfSo0ePJGnSB87yYNHSE9arstdee+Wggw5KkowbNy5bbrlljj322FxxxRWZPHnyKl+zaNGi9OzZs0XqW7x4cVkDWDV07dq1KuedO3dufvjDH+aYY47JxRdf3Oi58847L/Pnzy897tSpU9n/Pnbu3LkUPivhrbfeSn19fbp169aiP0t77LFH7rvvvlx11VU57rjjSvv//ve/5//+7//ysY99LL/+9a8rXse//x5pDb9LAOiYzjjjjPTt2zf33Xdf1l133UbPzZs3rzpFtaBKZCj5vPLk88qQz+VzqJa2+4kEzfC+970vJ598cp577rn89Kc/Le1f1ZrRNTU1mTBhQn72s59lm222SW1tbW688cYkyQsvvJCjjz46AwYMSG1tbbbZZptceumlK51v8eLFOfXUU7Plllume/fuGTRoUD7+8Y/nmWeeybPPPpsNN9wwSfLNb36z9DWkNfka1Pve974kyaxZsxq9n0cffTSf/OQns95662XPPfcsHf/Tn/40O++8c3r06JF+/frlsMMOy+zZsxuNuc8++2TbbbfNAw88kN133z09evTIsGHDctFFFzU6bvlXE3/xi1/kG9/4RjbaaKOss846WbBgQZLk6quvLp1rgw02yKc+9am88MILK72Hxx9/PIccckg23HDD9OjRI+9+97vz9a9/vdExTb3u3//+97PNNttknXXWyXrrrZeRI0fmyiuvLD2/cOHCTJw4MUOHDk1tbW369++fD3zgA5kxY0bpmP9ck275Gmrf+c53cvHFF2ezzTZLbW1tdtlll9x3330r1XD11Vdn6623Tvfu3bPtttvmmmuuadI6d7NmzUpRFNljjz1Weq6mpib9+/cvPV7VmnTL/9weeuih7L333llnnXWy+eab51e/+lWS5LbbbsuoUaNK1/hPf/pTo3Osak26/7R06dKccsop2XnnndO3b9/07Nkze+21V2655ZZGx/37NTvvvPNK1+zRRx9daU26o446KhdccEHpfS7fiqLI0KFD89GPfnSlOhYvXpy+ffvm85///Nte0yTp3r17Pv7xjzf6e5AkP//5z7PeeutlzJgxK73moYceylFHHZV3vetd6d69ewYOHJijjz46L7/8cumYU089NSeccEKSZNiwYaW6l1+/t/s98u8/7//85z8zfPjwDB8+PP/85z9L47/yyisZNGhQdt9999TV1b3j+wSApnjmmWeyzTbbrDQRnaRR1liuOdlxTTPIc889ly996Ut597vfnR49emT99dfPwQcfvFImWZ5V7rjjjkyaNCkbbrhhevbsmY997GONJgWHDh2av/71r7nttttKn8//3k26qnV977nnnnz4wx/Oeuutl549e2b77bfP+eef38Sr2ph83ph8Lp//J/kc0BlNh/HpT386X/va1/LHP/4xxxxzzNsee/PNN+eXv/xlJkyYkA022KD0daL/+q//Kn2Ibbjhhrnhhhvymc98JgsWLMjEiROTNHyd6iMf+UimT5+eww47LMcdd1wWLlyYadOm5ZFHHsno0aNz4YUX5otf/GI+9rGP5eMf/3iSNFo+pKmeeeaZJMn666/faP/BBx+cLbbYImeeeWbpq1VnnHFGTj755BxyyCH57Gc/m/nz5+f73/9+3vOe9+Qvf/lLo3+UvPrqq/nwhz+cQw45JIcffnh++ctf5otf/GK6deuWo48+utG5Tj/99HTr1i1f+cpXsmTJknTr1q20ZMouu+ySqVOnZu7cuTn//PNzxx13NDrXQw89lL322itdu3bN5z73uQwdOjTPPPNMfv/73+eMM85IkiZf90suuSTHHntsDjrooBx33HFZvHhxHnroodxzzz355Cc/mST5whe+kF/96leZMGFCtt5667z88su5/fbb89hjj2WnnXZ622t95ZVXZuHChfn85z+fmpqanHPOOfn4xz+ev/3tb6Vujeuvvz6HHnpotttuu0ydOjWvvvpqPvOZz2SjjTZ6xz/LTTfdNElDWD744IOzzjrrvONr/tOrr76aj3zkIznssMNy8MEH58ILL8xhhx2Wn/3sZ5k4cWK+8IUv5JOf/GS+/e1v56CDDsrs2bPTu3fvJo+/YMGC/PjHP87hhx+eY445JgsXLsz//M//ZMyYMbn33nszYsSIRsdfdtllWbx4cT73uc+ltrY2/fr1S319faNjPv/5z+fFF1/MtGnT8r//+7+l/TU1NfnUpz6Vc845J6+88kr69etXeu73v/99FixYkE996lNNqvuTn/xkPvjBD+aZZ57JZpttlqThz/Oggw5aZafNtGnT8re//S3jxo3LwIED89e//jUXX3xx/vrXv+buu+9OTU1NPv7xj+fJJ5/Mz3/+8/y///f/ssEGGyRJ6X80Jav+PfKfevTokSuuuCJ77LFHvv71r+fcc89NkowfPz6vv/56Lr/88op2xADQsWy66aa566678sgjj2Tbbbd922Obmx3XNIPcd999ufPOO3PYYYdl4403zrPPPpsLL7ww++yzTx599NGVMtGXv/zlrLfeepkyZUqeffbZnHfeeZkwYUKuuuqqJA0dq1/+8pfTq1ev0gTqgAEDVvs+p02blo985CMZNGhQjjvuuAwcODCPPfZYrrvuukZdm00ln8vn/04+XzX5HDq4AtqJyy67rEhS3Hfffas9pm/fvsWOO+5YejxlypTiP38MkhSdOnUq/vrXvzba/5nPfKYYNGhQ8dJLLzXaf9hhhxV9+/Yt3nzzzaIoiuLSSy8tkhTnnnvuSuevr68viqIo5s+fXyQppkyZ0qT3dssttxRJiksvvbSYP39+8eKLLxbXX399MXTo0KKmpqb0npe/n8MPP7zR65999tmic+fOxRlnnNFo/8MPP1x06dKl0f699967SFJ897vfLe1bsmRJMWLEiKJ///7F0qVLG9X0rne9q/Tei6Ioli5dWvTv37/Ydttti3/+85+l/dddd12RpDjllFNK+97znvcUvXv3Lp577rlVXqeiaPp1/+hHP1pss802b3sd+/btW4wfP/5tjxk7dmyx6aablh7PmjWrSFKsv/76xSuvvFLa/7vf/a5IUvz+978v7dtuu+2KjTfeuFi4cGFp36233lokaTTm6hx55JFFkmK99dYrPvaxjxXf+c53iscee2yl45Zf+1tuuaW0b/mf25VXXlna9/jjj5f+Pt99992l/TfddFORpLjssstK+5b//MyaNavRmHvvvXfp8VtvvVUsWbKkUS2vvvpqMWDAgOLoo48u7Vt+zfr06VPMmzev0fHLn/v3c48fP36ln8OiKIonnniiSFJceOGFjfYfcMABxdChQxv9PVmVTTfdtNhvv/2Kt956qxg4cGBx+umnF0VRFI8++miRpLjttttW+Xvj3/8+L/fzn/+8SFL8+c9/Lu379re/vdI1W251v0eWP/efP/uTJ08uOnXqVPz5z38urr766iJJcd55573t+wOA5vrjH/9YdO7cuejcuXOx2267FV/96leLm266qZTvlluT7LimGWRVn7t33XVXkaT4yU9+Utq3/DN79OjRjTLA8ccfX3Tu3Ll47bXXSvu22WabRhlmuf/MUG+99VYxbNiwYtNNNy1effXVRse+U86Qz+Xzfyefy+dA01mmgw6lV69eWbhw4Tset/fee2frrbcuPS6KIr/+9a+z//77pyiKvPTSS6VtzJgxef3110tfJfv1r3+dDTbYIF/+8pdXGvc/lwRprqOPPjobbrhhBg8enP322y+LFi3KFVdcsdKNHb7whS80evyb3/wm9fX1OeSQQxrVPnDgwGyxxRYrfY2rS5cujb5i1a1bt3z+85/PvHnz8sADDzQ6duzYsaU1uJPk/vvvz7x58/KlL32p0dpb++23X4YPH57rr78+STJ//vz8+c9/ztFHH51NNtmk0ZjLr1Nzrvu6666bv//976v8at5y6667bu655568+OKLqz1mdQ499NCst956pcd77bVXkpTulv7iiy/m4YcfzpFHHplevXqVjtt7772z3XbbNekcl112WX7wgx9k2LBhueaaa/KVr3wlW221Vd7//vev8iuU/6lXr1457LDDSo/f/e53Z911181WW22VUaNGlfYv/+/m3um9c+fO6datW5KGNdZeeeWVvPXWWxk5cmSjr1Iu94lPfKJRJ0Jzbbnllhk1alR+9rOflfa98sorueGGG3LEEUc0+eepc+fOOeSQQ/Lzn/88SfKzn/0sQ4YMKf0Z/qd///u8ePHivPTSS/mv//qvJFnl+1yd//w98nZOPfXUbLPNNhk7dmy+9KUvZe+9986xxx7b5HMBQFN84AMfyF133ZUDDjggDz74YM4555yMGTMmG220Ua699trScc3NjmuTQf79c3fZsmV5+eWXs/nmm2fddddd5efu5z73uUYZYK+99kpdXV2ee+65Zl+Pv/zlL5k1a1YmTpy40tIlTc0Z8rl8/nbk89XXLZ9Dx2Uymg7ljTfeaNLXnoYNG9bo8fz58/Paa6/l4osvzoYbbthoGzduXJIVN3155pln8u53v7sid+I95ZRTMm3atNx888156KGH8uKLL+bTn/70O9b/1FNPpSiKbLHFFivV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tttuu1br1b2dzTbbLN/61rcyefLkPPvssznwwAPTu3fvzJo1K9dcc00+97nP5Stf+Urp+MGDB+fss8/Os88+my233DJXXXVVZs6cmYsvvni13d7Lde3aNWeffXbGjRuXvffeO4cffnjmzp2b888/P0OHDm30Af69730ve+65Z3baaad87nOfy7Bhw/Lss8/m+uuvz8yZM5M0/bp/8IMfzMCBA7PHHntkwIABeeyxx/KDH/wg++23X3r37p3XXnstG2+8cQ466KDssMMO6dWrV/70pz/lvvvue9vw0xxnnnlmPvrRj2aPPfbIuHHj8uqrr+YHP/hBtt1220YBeFX+/ve/Z9ddd8373ve+vP/978/AgQMzb968/PznP8+DDz6YiRMnZoMNNihLnWvqIx/5SH7zm9/kYx/7WPbbb7/MmjUrF110Ubbeeut3fH9vZ/k/oI499tiMGTNmpUC73377Zf3118/VV1+dfffdN/3791+j82y66aY59dRT3/aYPn365D3veU/OOeecLFu2LBtttFH++Mc/ZtasWaut++tf/3oOO+ywdO3aNfvvv/9K6zm+k29961uZOXNmpk+fnt69e2f77bfPKaeckm984xs56KCD8uEPf7hZ4wHA6nz5y1/Om2++mY997GMZPnx4li5dmjvvvDNXXXVVhg4dWlrzt7nZcW185CMfyf/+7/+mb9++2XrrrXPXXXflT3/6U9Zff/01HnPnnXfOhRdemG9961vZfPPN079//5U6gpOG9YAvvPDC7L///hkxYkTGjRuXQYMG5fHHH89f//rX0lf0K0E+l8/LQT5fdd3yObRyBbQTl112WZGktHXr1q0YOHBg8YEPfKA4//zziwULFqz0milTphT/+WOQpBg/fvwqzzF37txi/PjxxZAhQ4quXbsWAwcOLN7//vcXF198caPj3nzzzeLrX/96MWzYsNJxBx10UPHMM8+UjrnzzjuLnXfeuejWrVuRpJgyZcpq39stt9xSJCmuvvrqt70Gy9/P/PnzV/n8r3/962LPPfcsevbsWfTs2bMYPnx4MX78+OKJJ54oHbP33nsX22yzTXH//fcXu+22W9G9e/di0003LX7wgx80q6arrrqq2HHHHYva2tqiX79+xRFHHFH8/e9/X+m4Rx55pPjYxz5WrLvuukX37t2Ld7/73cXJJ5/c6JimXPcf/ehHxXve855i/fXXL2pra4vNNtusOOGEE4rXX3+9KIqiWLJkSXHCCScUO+ywQ9G7d++iZ8+exQ477FD88Ic/bHSusWPHFptuumnp8axZs4okxbe//e2Val/Vn9svfvGLYvjw4UVtbW2x7bbbFtdee23xiU98ohg+fPgqr9NyCxYsKM4///xizJgxxcYbb1x07dq16N27d7HbbrsVl1xySVFfX186dvm1v+WWW0r7lv+5/adNN9202G+//VZZ+7//PV/+8zNr1qxGY+69996lx/X19cWZZ55ZbLrppkVtbW2x4447Ftddd12zrtny5y677LLSvrfeeqv48pe/XGy44YZFTU3NSj+TRVEUX/rSl4okxZVXXrnSc6uzuvf+75a/7/vuu6+07+9//3vp72Tfvn2Lgw8+uHjxxRdX+ed9+umnFxtttFHRqVOnRtfv7X6P/Ps4DzzwQNGlS5fiy1/+cqNj3nrrrWKXXXYpBg8eXLz66qtNfs8A8HZuuOGG4uijjy6GDx9e9OrVq+jWrVux+eabF1/+8peLuXPnrnR8c7Ljf2pqBnn11VeLcePGFRtssEHRq1evYsyYMcXjjz9ebLrppsXYsWNLx63qM7soVp2L5syZU+y3335F7969iySlPLOqY4uiKG6//fbiAx/4QCkjbr/99sX3v//9t7uU8rl8Lp/L58AaqimKKt3pAWiV9tlnn7z00ktvu1YczTNixIhsuOGGmTZtWrVLabOOP/74/M///E/mzJlTWuYGAKAjkM/LTz5fe/I5sKasGQ1QJsuWLctbb73VaN+tt96aBx98MPvss091imoHFi9enJ/+9Kf5xCc+IegCANBk8nllyOfA2rBmNECZvPDCCxk9enQ+9alPZfDgwXn88cdz0UUXZeDAgfnCF75Q7fLanHnz5uVPf/pTfvWrX+Xll1/OcccdV+2SAABoQ+Tz8pLPgXIwGQ1QJuutt1523nnn/PjHP878+fPTs2fP7LfffjnrrLPW6iY8HdWjjz6aI444Iv3798/3vve9jBgxotolAQDQhsjn5SWfA+VgzWgAAFqlP//5z/n2t7+dBx54IP/4xz9yzTXX5MADD3zb19x6662ZNGlS/vrXv2bIkCH5xje+kaOOOqpF6gUAgLaiWlnbmtEAALRKixYtyg477JALLrigScfPmjUr++23X9773vdm5syZmThxYj77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Sm+77baMHz8+d999d6ZNm5Zly5blgx/8YBYtWlTt0gAAoE2TtQEAaGmtes3oG2+8sdHjyy+/PP37988DDzyQ97znPVWqCgCg/aorOqWuQp0VlRqXNSNrAwC0HDm7QauejP5Pr7/+epKkX79+qz1myZIlWbJkSenxggULKl4XAAC0de+UteVsAADWVpuZNq+vr8/EiROzxx57ZNttt13tcVOnTk3fvn1L25AhQ1qwSgCAtq1ITeortBVrePfwCy64IEOHDk337t0zatSo3HvvvW97/HnnnZd3v/vd6dGjR4YMGZLjjz8+ixcvXqNzdxRNydpyNgDAmpOzG7SZyejx48fnkUceyS9+8Yu3PW7y5Ml5/fXXS9vs2bNbqEIAAMrtqquuyqRJkzJlypTMmDEjO+ywQ8aMGZN58+at8vgrr7wyJ510UqZMmZLHHnss//M//5OrrroqX/va11q48ralKVlbzgYAaD+qlbPbxDIdEyZMyHXXXZc///nP2Xjjjd/22Nra2tTW1rZQZQAA7UtrW8vu3HPPzTHHHJNx48YlSS666KJcf/31ufTSS3PSSSetdPydd96ZPfbYI5/85CeTJEOHDs3hhx+ee+65Z+2Kb8eamrXlbACANSdnN2jVndFFUWTChAm55pprcvPNN2fYsGHVLgkAgLW0YMGCRtu/r0P875YuXZoHHnggo0ePLu3r1KlTRo8enbvuumuVr9l9993zwAMPlL5i+Le//S1/+MMf8uEPf7j8b6SNk7UBANqXtpCzW3Vn9Pjx43PllVfmd7/7XXr37p05c+YkSfr27ZsePXpUuToAgPanvqhJfbFma841ZewkK601PGXKlJx66qkrHf/SSy+lrq4uAwYMaLR/wIABefzxx1d5jk9+8pN56aWXsueee6Yoirz11lv5whe+YJmOVZC1AQBajpzdoFVPRl944YVJkn322afR/ssuuyxHHXVUyxcEAMBamz17dvr06VN6XM6lH2699daceeaZ+eEPf5hRo0bl6aefznHHHZfTTz89J598ctnO0x7I2gAA7UtbyNmtejK6KIpqlwAA0KHUpVPqKrSS2/Jx+/Tp0ygkr84GG2yQzp07Z+7cuY32z507NwMHDlzla04++eR8+tOfzmc/+9kkyXbbbZdFixblc5/7XL7+9a+nU6dWvUpdi5K1AQBajpzdQBoHAKBV6tat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zGc+85mss8462WabbfL8888nSb785S/nrLPOKnuBAADQEcjZAAC0d82ejJ48eXIefPDB3HrrrenevXtp/+jRo3PVVVeVtTgAAFpYUeGN1ZKzAQDaMTk7yRrcwPC3v/1trrrqqvzXf/1XampWLI69zTbb5JlnnilrcQAA0FHI2QAAtHfNnoyeP39++vfvv9L+RYsWNQrNAAC0Qe7yXTVyNgBAOyZnJ1mDZTpGjhyZ66+/vvR4eTD+8Y9/nN122618lQEAQAciZwMA0N41uzP6zDPPzL777ptHH300b731Vs4///w8+uijufPOO3PbbbdVokYAAFpKJdeca0Nr2VWDnA0A0I7J2UnWoDN6zz33zMyZM/PWW29lu+22yx//+Mf0798/d911V3beeedK1AgAAO2enA0AQHvX7M7oJNlss81yySWXlLsWAACqTcdGVcnZAADtlJydZA06o//whz/kpptuWmn/TTfdlBtuuKEsRQEAQEcjZwMA0N41ezL6pJNOSl1d3Ur7i6LISSedVJaiAACokqLCG6slZwMAtGNydpI1mIx+6qmnsvXWW6+0f/jw4Xn66afLUhQAAHQ0cjYAAO1dsyej+/btm7/97W8r7X/66afTs2fPshQFAECVFDWV3VgtORsAoB2Ts5OswWT0Rz/60UycODHPPPNMad/TTz+d//7v/84BBxxQ1uIAAKCjkLMBAGjvmj0Zfc4556Rnz54ZPnx4hg0blmHDhmWrrbbK+uuvn+985zuVqBEAgBZSU1R2Y/XkbACA9kvObtCluS/o27dv7rzzzkybNi0PPvhgevToke233z7vec97KlEfAAB0CHI2AADtXbMno5OkpqYmH/zgB/PBD36w3PUAAFBNlbwbdxvq2KgWORsAoJ2Ss5Os4WT09OnTM3369MybNy/19fWNnrv00kvLUthyL7zwQk488cTccMMNefPNN7P55pvnsssuy8iRI8t6HgAAqLaWzNmJrA0AQMtq9mT0N7/5zZx22mkZOXJkBg0alJqayt2t8dVXX80ee+yR9773vbnhhhuy4YYb5qmnnsp6661XsXMCAEA1tGTOTmRtAABaXrMnoy+66KJcfvnl+fSnP12Jeho5++yzM2TIkFx22WWlfcOGDav4eQEAoKW1ZM5OZG0AAFpep+a+YOnSpdl9990rUctKrr322owcOTIHH3xw+vfvnx133DGXXHJJi5wbAKAjqkkF7/Jd7TfXyrVkzk5kbQCAliRnN2j2ZPRnP/vZXHnllZWoZSV/+9vfcuGFF2aLLbbITTfdlC9+8Ys59thjc8UVV6z2NUuWLMmCBQsabQAA0Nq1ZM5Omp+15WwAANZWs5fpWLx4cS6++OL86U9/yvbbb5+uXbs2ev7cc88tW3H19fUZOXJkzjzzzCTJjjvumEceeSQXXXRRxo4du8rXTJ06Nd/85jfLVgMAQIdS1DRslRqb1WrJnJ00P2vL2QAAa0HOTrIGk9EPPfRQRowYkSR55JFHGj1X7pusDBo0KFtvvXWjfVtttVV+/etfr/Y1kydPzqRJk0qPFyxYkCFDhpS1LgCAdqv411apsVmtlszZSfOztpwNALAW5OwkazAZfcstt1SijlXaY4898sQTTzTa9+STT2bTTTdd7Wtqa2tTW1tb6dIAAKCsWjJnJ83P2nI2AABrq9lrRi/39NNP56abbso///nPJElRlH8K/vjjj8/dd9+dM888M08//XSuvPLKXHzxxRk/fnzZzwUAQFZ0bFRq4x21RM5OZG0AgBYlZydZg8nol19+Oe9///uz5ZZb5sMf/nD+8Y9/JEk+85nP5L//+7/LWtwuu+ySa665Jj//+c+z7bbb5vTTT895552XI444oqznAQCAamvJnJ3I2gAAtLxmT0Yff/zx6dq1a55//vmss846pf2HHnpobrzxxrIWlyQf+chH8vDDD2fx4sV57LHHcswxx5T9HAAANKgpKruxei2dsxNZGwCgpcjZDZq9ZvQf//jH3HTTTdl4440b7d9iiy3y3HPPla0wAADoSORsAADau2ZPRi9atKhRp8Zyr7zyihuaAAC0de7yXTVyNgBAOyZnJ1mDZTr22muv/OQnPyk9rqmpSX19fc4555y8973vLWtxAADQUcjZAAC0d83ujD7nnHPy/ve/P/fff3+WLl2ar371q/nrX/+aV155JXfccUclagQAoKXo2KgaORsAoB2Ts5OsQWf0tttumyeffDJ77rlnPvrRj2bRokX5+Mc/nr/85S/ZbLPNKlEjAAC0e3I2AADtXbM7o59//vkMGTIkX//611f53CabbFKWwgAAaHmVvBt3W7rLdzXI2QAA7Zec3aDZndHDhg3L/PnzV9r/8ssvZ9iwYWUpCgAAOho5GwCA9q7ZndFFUaSmpmal/W+88Ua6d+9elqIAAKiSoqZhq9TYrJacDQDQjsnZSZoxGT1p0qQkDXf1Pvnkk7POOuuUnqurq8s999yTESNGlL1AAABoz+RsAAA6iiZPRv/lL39J0tCx8fDDD6dbt26l57p165YddtghX/nKV8pfIQAALcddvlucnA0A0AHI2UmaMRl9yy23JEnGjRuX888/P3369KlYUQAA0FHI2QAAdBTNXjP6sssuq0QdAAC0Au7yXT1yNgBA+yVnN2j2ZPSiRYty1llnZfr06Zk3b17q6+sbPf+3v/2tbMUBAEBHIWcDANDeNXsy+rOf/Wxuu+22fPrTn86gQYNWecfv1uiPH/5+evfuVO0y3tHsutpql9Akjy8ZVO0SmuyW17aqdglNdvjQ+6tdQpMM+/0x1S6hXZq1/yXVLqFJTpw7otolNNnE9W+vdglNdsi1/13tEppk7p7173xQK9H3p9WuoI2yll3VtNWcDZTPhz9waLVLaJf+MO2qapfQJGMGj6h2CUAlydlJ1mAy+oYbbsj111+fPfbYoxL1AABAhyRnAwDQ3jV7Mnq99dZLv379KlELAADVVsG17NpSx0Y1yNkAAO2YnJ0kafa6FaeffnpOOeWUvPnmm5WoBwAAOiQ5GwCA9q7ZndHf/e5388wzz2TAgAEZOnRounbt2uj5GTNmlK04AABamLXsqkbOBgBox+TsJGswGX3ggQdWoAwAAOjY5GwAANq7Zk9GT5kypRJ1AADQGujYqBo5GwCgHZOzk6zBmtFJ8tprr+XHP/5xJk+enFdeeSVJw9cGX3jhhbIWBwAAHYmcDQBAe9bszuiHHnooo0ePTt++ffPss8/mmGOOSb9+/fKb3/wmzz//fH7yk59Uok4AAFpATQXv8l2xu4e3E3I2AED7JWc3aHZn9KRJk3LUUUflqaeeSvfu3Uv7P/zhD+fPf/5zWYsDAICOQs4GAKC9a/Zk9H333ZfPf/7zK+3faKONMmfOnLIUBQAAHY2cDQBAe9fsyeja2tosWLBgpf1PPvlkNtxww7IUBQAAHY2cDQBAe9fsyegDDjggp512WpYtW5YkqampyfPPP58TTzwxn/jEJ8peIAAALaio8MZqydkAAO2YnJ1kDSajv/vd7+aNN95I//79889//jN77713Nt988/Tu3TtnnHFGJWoEAIB2T84GAKC969LcF/Tt2zfTpk3LHXfckQcffDBvvPFGdtppp4wePboS9QEA0ILc5bt65GwAgPZLzm7Q7Mno5fbYY4/sscce5awFAAA6PDkbAID2qsnLdNx111257rrrGu37yU9+kmHDhqV///753Oc+lyVLlpS9QAAAWlgHX8eupcnZAAAdhJzd9Mno0047LX/9619Ljx9++OF85jOfyejRo3PSSSfl97//faZOnVqRIgEAoL2SswEA6CiaPBk9c+bMvP/97y89/sUvfpFRo0blkksuyaRJk/K9730vv/zlLytSJAAALcRdvlucnA0A0AHI2UmaMRn96quvZsCAAaXHt912W/bdd9/S41122SWzZ88ub3UAANDOydkAAHQUTZ6MHjBgQGbNmpUkWbp0aWbMmJH/+q//Kj2/cOHCdO3atfwVAgDQYpbf5btSGyuTswEA2j85u0GTJ6M//OEP56STTsr//d//ZfLkyVlnnXWy1157lZ5/6KGHstlmm1WkSAAAaK/kbAAAOoouTT3w9NNPz8c//vHsvffe6dWrV6644op069at9Pyll16aD37wgxUpEgCAFlLJNefaUMdGS5KzAQA6ADk7STMmozfYYIP8+c9/zuuvv55evXqlc+fOjZ6/+uqr06tXr7IXCAAA7ZmcDQBAR9Hkyejl+vbtu8r9/fr1W+tiAACorkquOdeW1rKrBjkbAKD9krMbNHnNaAAAAAAAWFMmowEAWKGo8LYGLrjgggwdOjTdu3fPqFGjcu+99zbpdb/4xS9SU1OTAw88cM1ODAAA5SJnJzEZDQBAK3bVVVdl0qRJmTJlSmbMmJEddtghY8aMybx58972dc8++2y+8pWvZK+99mqhSgEAoO2oVs42GQ0AwAqtrGPj3HPPzTHHHJNx48Zl6623zkUXXZR11lknl1566WpfU1dXlyOOOCLf/OY38653vav5JwUAgHKTs5OYjAYAoJVaunRpHnjggYwePbq0r1OnThk9enTuuuuu1b7utNNOS//+/fOZz3ymJcoEAIA2pZo5u8savxIAgHanJe7yvWDBgkb7a2trU1tbu9LxL730Uurq6jJgwIBG+wcMGJDHH398lee4/fbb8z//8z+ZOXNmWWoGAIBykLMb6IwGAKBFDRkyJH379i1tU6dOLcu4CxcuzKc//elccskl2WCDDcoyJgAAtBVtIWfrjAYAYIW1uBt3k8ZOMnv2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xx+vUlXtR319fSZOnJg99tgj2267bbXLadN+8YtfZMaMGbnvvvuqXUq78be//S0XXnhhJk2alK997Wu57777cuyxx6Zbt24ZO3Zstctrk0466aQsWLAgw4cPT+fOnVNXV5czzjgjRxxxRLVLaxfmzJmTJKv8zFr+HGtv8eLFOfHEE3P44YenT58+1S4H2iw5u7Lk7PKRs8tPzi4/ObvyZO3Kk7PbL5PRtBrjx4/PI488kttvv73apbRps2fPznHHHZdp06ale/fu1S6n3aivr8/IkSNz5plnJkl23HHHPPLII7nooouE5DX0y1/+Mj/72c9y5ZVXZptttsnMmTMzceLEDB482DWlTVi2bFkOOeSQFEWRCy+8sNrlAKyWnF0ecnZlyNnlJ2fT1snZ7ZtlOpphgw02SOfOnTN37txG++fOnZuBAwdWqar2YcKECbnuuutyyy23ZOONN652OW3aAw88kHnz5mWnnXZKly5d0qVLl9x222353ve+ly5duqSurq7aJbZJgwYNytZbb91o31ZbbZXnn3++ShW1fSeccEJOOumkHHbYYdluu+3y6U9/Oscff3ymTp1a7dLaheWfSz6zKmN5QH7uuecybdo03RqwluTsypGzy0fOrgw5u/zk7MqTtStHzm7/TEY3Q7du3bLzzjtn+vTppX319fWZPn16dttttypW1nYVRZEJEybkmmuuyc0335xhw4ZVu6Q27/3vf38efvjhzJw5s7SNHDkyRxxxRGbOnJnOnTtXu8Q2aY899sgTTzzRaN+TTz6ZTTfdtEoVtX1vvvlmOnVq/DHUuXPn1NfXV6mi9mXYsGEZOHBgo8+sBQsW5J577vGZtZaWB+Snnnoqf/rTn7L++utXuyRo8+Ts8pOzy0/Orgw5u/zk7MqTtStDzu4YLNPRTJMmTcrYsWMzcuTI7LrrrjnvvPOyaNGijBs3rtqltUnjx4/PlVdemd/97nfp3bt3aW2lvn37pkePHlWurm3q3bv3SmsB9uzZM+uvv741AtfC8ccfn9133z1nnnlmDjnkkNx77725+OKLc/HFF1e7tDZr//33zxlnnJFNNtkk22yzTf7yl7/k3HPPzdFHH13t0tqMN954I08//XTp8axZszJz5sz069cvm2yySSZOnJhvfetb2WKLLTJs2LCcfPLJGTx4cA488MDqFd0GvN11HTRoUA466KDMmDEj1113Xerq6kqfXf369Uu3bt2qVTa0eXJ2ecnZ5SdnV4acXX5ydnnI2uUnZ5MkKWi273//+8Umm2xSdOvWrdh1112Lu+++u9oltVlJVrlddtll1S6tXdl7772L4447rtpltHm///3vi2233baora0thg8fXlx88cXVLqlNW7BgQXHccccVm2yySdG9e/fiXe96V/H1r3+9WLJkSbVLazNuueWWVf4OHTt2bFEURVFfX1+cfPLJxYABA4ra2tri/e9/f/HEE09Ut+g24O2u66xZs1b72XXLLbdUu3Ro8+Ts8pGzW4acXR5ydnnJ2eUha5efnE1RFEVNURRFZaa5AQAAAACggTWjAQAAAACoOJPRAAAAAABUnMloAAAAAAAqzmQ0AAAAAAAVZzIaAAAAAICKMxkNAAAAAEDFmYwGAAAAAKDiTEYDAAAAAFBxJqMBAAAAAKg4k9FAqzJ//vx88YtfzCabbJLa2toMHDgwY8aMyR133FHW8+yzzz6ZOHFiWceslMsvvzzrrrtuo8c1NTWpqalJ586ds95662XUqFE57bTT8vrrr1evUAAAWi05e2VyNkDL61LtAgD+3Sc+8YksXbo0V1xxRd71rndl7ty5mT59el5++eVql9aq9OnTJ0888USKoshrr72WO++8M1OnTs1ll12WO+64I4MHD652iQAAtCJydtPI2QCVpTMaaDVee+21/N///V/OPvvsvPe9782mm26aXXfdNZMnT84BBxzQ6LjPfvaz2XDDDdOnT5+8733vy4MPPlh6/tRTT82IESPyv//7vxk6dGj69u2bww47LAsXLkySHHXUUbntttty/vnnlzofnn322STJI488kn333Te9evXKgAED8ulPfzovvfRSaex99tknxx57bL761a+mX79+GThwYE499dSV3sfnP//5DBgwIN27d8+2226b6667rvT87bffnr322is9evTIkCFDcuyxx2bRokXNulY1NTUZOHBgBg0alK222iqf+cxncuedd+aNN97IV7/61WaNBQBA+yZnN52cDVBZJqOBVqNXr17p1atXfvvb32bJkiWrPe7ggw/OvHnzcsMNN+SBBx7ITjvtlPe///155ZVXSsc888wz+e1vf5vrrrsu1113XW677bacddZZSZLzzz8/u+22W4455pj84x//yD/+8Y8MGTIkr732Wt73vvdlxx13zP33358bb7wxc+fOzSGHHNLo/FdccUV69uyZe+65J+ecc05OO+20TJs2LUlSX1+ffffdN3fccUd++tOf5tFHH81ZZ52Vzp07l+r60Ic+lE984hN56KGHctVVV+X222/PhAkT1vr69e/fP0cccUSuvfba1NXVrfV4AAC0D3L22pGzAcqoAGhFfvWrXxXrrbde0b1792L33XcvJk+eXDz44IOl5//v//6v6NOnT7F48eJGr9tss82KH/3oR0VRFMWUKVOKddZZp1iwYEHp+RNOOKEYNWpU6fHee+9dHHfccY3GOP3004sPfvCDjfbNnj27SFI88cQTpdftueeejY7ZZZddihNPPLEoiqK46aabik6dOpWO/0+f+cxnis997nON9v3f//1f0alTp+Kf//znKl9z2WWXFX379l3t43934YUXFkmKuXPnrvJ5AAA6Jjl7ZXI2QMvTGQ20Kp/4xCfy4osv5tprr82HPvSh3Hrrrdlpp51y+eWXJ0kefPDBvPHGG1l//fVLHR69evXKrFmz8swzz5TGGTp0aHr37l16PGjQoMybN+9tz/3ggw/mlltuaTTu8OHDk6TR2Ntvv32j1/372DNnzszGG2+cLbfccrXnuPzyyxudY8yYMamvr8+sWbOafqFWoyiKJA1fLwQAgOXk7LUjZwOUhxsYAq1O9+7d84EPfCAf+MAHcvLJJ+ezn/1spkyZkqOOOipvvPFGBg0alFtvvXWl1/37nbC7du3a6LmamprU19e/7XnfeOON7L///jn77LNXem7QoEFNGrtHjx7veI7Pf/7zOfbYY1d6bpNNNnnb1zbFY489lj59+mT99ddf67EAAGhf5Ow1J2cDlIfJaKDV23rrrfPb3/42SbLTTjtlzpw56dKlS4YOHbrGY3br1m2l9d522mmn/PrXv87QoUPTpcua/Xrcfvvt8/e//z1PPvnkKrs2dtpppzz66KPZfPPN12j8tzNv3rxceeWVOfDAA9Opky++AADw9uTsppGzAcrHb1Gg1Xj55Zfzvve9Lz/96U/z0EMPZdasWbn66qtzzjnn5KMf/WiSZPTo0dltt91y4IEH5o9//GOeffbZ3Hnnnfn617+e+++/v8nnGjp0aO655548++yzeemll1JfX5/x48fnlVdeyeGHH5777rsvzzzzTG666aaMGzeuyTcq2XvvvfOe97wnn/jEJzJt2rTMmjUrN9xwQ2688cYkyYknnpg777wzEyZMyMyZM/PUU0/ld7/7XbNvrFIURebMmZN//OMfeeyxx3LppZdm9913T9++fUs3kAEAgETObg45G6CydEYDrUavXr0yatSo/L//9//yzDPPZNmyZRkyZEiOOeaYfO1rX0vS8FW9P/zhD/n617+ecePGZf78+Rk4cGDe8573ZMCAAU0+11e+8pWMHTs2W2+9df75z39m1qxZGTp0aO64446ceOKJ+eAHP5glS5Zk0003zYc+9KFmdUD8+te/zle+8pUcfvjhWbRoUTbffPNScN1+++1z22235etf/3r22muvFEWRzTbbLIceemizrtWCBQsyaNCg1NTUpE+fPnn3u9+dsWPH5rjjjkufPn2aNRYAAO2bnN10cjZAZdUUy1fhBwAAAACACrFMBwAAAAAAFWcyGgAAAACAijMZDQAAAABAxZmMBgAAAACg4kxGAwAAAABQcSajAQAAAACoOJPRAAAAAABUnMloAAAAAAAqzmQ0AAAAAAAVZzIaAAAAAICKMxkNAAAAAEDFmYwGAAAAAKDi/j9BzpszByubqgAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 1500x600 with 4 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def create_similarity_matrix(sentences, method='direct'):\n",
|
|
" \"\"\"Create similarity matrix between all sentences\"\"\"\n",
|
|
" n = len(sentences)\n",
|
|
" similarity_matrix = np.zeros((n, n))\n",
|
|
" \n",
|
|
" preprocessor = TextPreprocessor()\n",
|
|
" \n",
|
|
" for i in range(n):\n",
|
|
" for j in range(n):\n",
|
|
" if i == j:\n",
|
|
" similarity_matrix[i][j] = 1.0\n",
|
|
" else:\n",
|
|
" if method == 'direct':\n",
|
|
" sent1 = preprocessor.direct_preprocessing(sentences[i])\n",
|
|
" sent2 = preprocessor.direct_preprocessing(sentences[j])\n",
|
|
" # Simple character-based similarity\n",
|
|
" if not sent1 or not sent2:\n",
|
|
" similarity = 0.0\n",
|
|
" else:\n",
|
|
" min_len = min(len(sent1), len(sent2))\n",
|
|
" max_len = max(len(sent1), len(sent2))\n",
|
|
" similarity = min_len / max_len if max_len > 0 else 0.0\n",
|
|
" \n",
|
|
" elif method == 'semantic':\n",
|
|
" sent1 = preprocessor.semantic_preprocessing(sentences[i])\n",
|
|
" sent2 = preprocessor.semantic_preprocessing(sentences[j])\n",
|
|
" # Jaccard similarity on semantic tokens\n",
|
|
" words1 = set(sent1.split())\n",
|
|
" words2 = set(sent2.split())\n",
|
|
" if not words1 and not words2:\n",
|
|
" similarity = 1.0\n",
|
|
" elif not words1 or not words2:\n",
|
|
" similarity = 0.0\n",
|
|
" else:\n",
|
|
" intersection = words1.intersection(words2)\n",
|
|
" union = words1.union(words2)\n",
|
|
" similarity = len(intersection) / len(union)\n",
|
|
" \n",
|
|
" similarity_matrix[i][j] = similarity\n",
|
|
" \n",
|
|
" return similarity_matrix\n",
|
|
"\n",
|
|
"# Create and visualize similarity matrices\n",
|
|
"direct_matrix = create_similarity_matrix(test_sentences, 'direct')\n",
|
|
"semantic_matrix = create_similarity_matrix(test_sentences, 'semantic')\n",
|
|
"\n",
|
|
"fig, axes = plt.subplots(1, 2, figsize=(15, 6))\n",
|
|
"\n",
|
|
"# Direct similarity heatmap\n",
|
|
"im1 = axes[0].imshow(direct_matrix, cmap='viridis', aspect='auto', vmin=0, vmax=1)\n",
|
|
"axes[0].set_title('Direct Preprocessing Similarity Matrix')\n",
|
|
"axes[0].set_xlabel('Sentence ID')\n",
|
|
"axes[0].set_ylabel('Sentence ID')\n",
|
|
"plt.colorbar(im1, ax=axes[0])\n",
|
|
"\n",
|
|
"# Semantic similarity heatmap\n",
|
|
"im2 = axes[1].imshow(semantic_matrix, cmap='viridis', aspect='auto', vmin=0, vmax=1)\n",
|
|
"axes[1].set_title('Semantic Preprocessing Similarity Matrix')\n",
|
|
"axes[1].set_xlabel('Sentence ID')\n",
|
|
"axes[1].set_ylabel('Sentence ID')\n",
|
|
"plt.colorbar(im2, ax=axes[1])\n",
|
|
"\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f0fc7b35",
|
|
"metadata": {},
|
|
"source": [
|
|
"Key observations:\n",
|
|
"- Direct similarity catches exact copies but misses paraphrases\n",
|
|
"- Semantic similarity identifies meaning-based relationships\n",
|
|
"- Notice how sentences 0-2 (direct copies) are highly similar in both matrices\n",
|
|
"- Sentences 3-4 (paraphrases) show higher semantic similarity"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "98f16f7d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"DATA EXPLORATION SUMMARY\n",
|
|
"==================================================\n",
|
|
"\n",
|
|
"1. TEXT CHARACTERISTICS:\n",
|
|
" - Sentence length varies from 0 to 44 characters\n",
|
|
" - Word count ranges from 0 to 10 words\n",
|
|
" - 10/13 sentences contain punctuation\n",
|
|
"\n",
|
|
"2. LINGUISTIC FEATURES:\n",
|
|
" - Direct preprocessing preserves exact character matching\n",
|
|
" - Semantic preprocessing extracts content words (nouns, verbs, adjectives)\n",
|
|
" - Syntactic preprocessing normalizes structure while preserving grammar\n",
|
|
"\n",
|
|
"3. DEPENDENCY PARSING INSIGHTS:\n",
|
|
" - Different sentence structures can express the same meaning\n",
|
|
" - Dependency trees reveal grammatical relationships\n",
|
|
" - Root verbs often indicate the main action of the sentence\n",
|
|
"\n",
|
|
"4. SIMILARITY PATTERNS:\n",
|
|
" - Direct copies show high similarity in both preprocessing methods\n",
|
|
" - Paraphrases show low direct similarity but higher semantic similarity\n",
|
|
" - Different sentences show low similarity in both methods\n",
|
|
"\n",
|
|
"5. IMPLICATIONS FOR PLAGIARISM DETECTION:\n",
|
|
" - Need multiple similarity measures for comprehensive detection\n",
|
|
" - Semantic analysis crucial for identifying paraphrased content\n",
|
|
" - Syntactic analysis may help with structural plagiarism\n"
|
|
]
|
|
}
|
|
],
|
|
"source": []
|
|
}
|
|
],
|
|
"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.13.7"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|