{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# 📌 Notebook Goals\n> - Understand Basic NLP Topics (Tokenization, Stemming, Lemmatization, Stop words).\n> - Spacy for Vocabulary Matching.\n> - Gensim for topic modeling and semantic similarity\n> - General discussion of what Natural Language Processing is.\n\n# 📚 What is Spacy?\n> - Spacy is an open source Natural Language Processing Library designed to effectively handle NLP tasks with the most efficient implementation of common algorithms.\n> - For many NLP tasks, Spacy only has one implementation method, choosing the most efficient algorithm currently available. This means you often don't have the option to choose other algorithms.\n\n# 📝 What is NLTK?\n> - NLTK - Natural Language Toolkit is a very popular open source. Initially released in 2001, it is much older than Spacy (released 2015). It also provides many functionalities, but includes less efficient implementations.\n\n# 💪🏻 NLTK vs Spacy\n> - For many common NLP tasks, Spacy is much faster and more efficient, at the cost of the user not being able to choose algorithmic implementations. However, Spacy does not include pre-created models for some applications, such as sentiment analysis, which is typically easier to perform with NLTK.\n\n# 📚 spaCy Basics\n\n**spaCy** (https://spacy.io/) is an open-source Python library that parses and \"understands\" large volumes of text. Separate models are available that cater to specific languages (English, French, German, etc.).\n\n\n## ✔️ Working with spaCy\n- There are few keys steps for working with Spacy:\n> 1. Loading the language library.\n> 2. Building a Pipeline Object\n> 3. Using Tokens\n> 4. Parts-of-Speech Tagging\n> 5. Understanding Token Attributes\n___\n## 🔪 Tokenization\n\nThe first step in processing text is to split up all the component parts (words & punctuation) into \"tokens\". These tokens are annotated inside the Doc object to contain descriptive information. \n\n![tokenization.png](attachment:tokenization.png)\n\n-  **Prefix**:\tCharacter(s) at the beginning &#9656; `$ ( “ ¿`\n-  **Suffix**:\tCharacter(s) at the end &#9656; `km ) , . ! ”`\n-  **Infix**:\tCharacter(s) in between &#9656; `- -- / ...`\n-  **Exception**: Special-case rule to split a string into several tokens or prevent a token from being split when punctuation rules are applied &#9656; `St. U.S.`\n\n> Notice that tokens are pieces of the original text. That is, we don't see any conversion to word stems or lemmas (base forms of words) and we haven't seen anything about organizations/places/money etc. Tokens are the basic building blocks of a Doc object - everything that helps us understand the meaning of the text is derived from tokens and their relationship to one another.\n\n## 📚 spaCy Objects\n\n> After importing the spacy module in the cell above we loaded a **model** and named it `nlp`.<br>Next we created a **Doc** object by applying the model to our text, and named it `doc`.<br>spaCy also builds a companion **Vocab** object that we'll cover in later sections.<br>The **Doc** object that holds the processed text is our focus here.\n\n## ➿ Pipeline\n> When we run `nlp`, our text enters a *processing pipeline* that first breaks down the text and then performs a series of operations to tag, parse and describe the data.   Image source: \n![pipeline1.png](attachment:pipeline1.png)\nWe can check to see what components currently live in the pipeline. In later sections we'll learn how to disable components and add new ones as needed.\n\n___\n## 🔖 Part-of-Speech Tagging (POS)\n> The next step after splitting the text up into tokens is to assign parts of speech. In the above example, `Tesla` was recognized to be a ***proper noun***. Here some statistical modeling is required. For example, words that follow \"the\" are typically nouns.\n\n___\n## 🧮 Dependencies\n> We also looked at the syntactic dependencies assigned to each token. `Tesla` is identified as an `nsubj` or the ***nominal subject*** of the sentence.\n\n___\n## ➕ Additional Token Attributes\n> We'll see these again in upcoming lectures. For now we just want to illustrate some of the other information that spaCy assigns to tokens:\n\n|Tag|Description|doc2[0].tag|\n|:------|:------:|:------|\n|`.text`|The original word text<!-- .element: style=\"text-align:left;\" -->|`Tesla`|\n|`.lemma_`|The base form of the word|`tesla`|\n|`.pos_`|The simple part-of-speech tag|`PROPN`/`proper noun`|\n|`.tag_`|The detailed part-of-speech tag|`NNP`/`noun, proper singular`|\n|`.shape_`|The word shape – capitalization, punctuation, digits|`Xxxxx`|\n|`.is_alpha`|Is the token an alpha character?|`True`|\n|`.is_stop`|Is the token part of a stop list, i.e. the most common words of the language?|`False`|\n\n\n___\n## 🧾 Spans\n> Large Doc objects can be hard to work with at times. A **span** is a slice of Doc object in the form `Doc[start:stop]`.\n\n___\n## 📑 Sentences\n> Certain tokens inside a Doc object may also receive a \"start of sentence\" tag. While this doesn't immediately build a list of sentences, these tags enable the generation of sentence segments through `Doc.sents`. Later we'll write our own segmentation rules.","metadata":{},"attachments":{"tokenization.png":{"image/png":"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GhoMebSemJqFE43TbOTSNE2b8kYefke+1l742lQ3R0Q0ZwwNDWHdunUA8sMVT6eh+4mo/mZTHaupqQmqqiISiRgCr1QqhVWrViGXyxUsI5oNeIeLiMgBfr8ffr9/0kkqDx06JF9bDXdPRDRbiFFZ29vb5cARLS0tWLJkCXK5HEKhEIMtmpUYcBEROaCxsRHxeBx9fX1FRwdMpVJy2F+fzzctu/QREdmlra1NTkw+MTGBeDyOZDIJn8+HSCQihz8nmm3YpZCIyAGJRAIrV64EcPGZrW984xsA8sMO79+/H319fXL9sbGxaf+sHRHVHutYRDMfAy4iIodEo1E5x0oxiqLglVdeQVtbW41SRUQzCetYRDMfuxQSETkkGAxCVdWC0QGBfBfC3t5efPzxxwy2iIiIZjHe4SIiIiKapljHIpr5eIeLiIiIiIjIIQy4iIiIiIiIHMKAi4iIiIiIyCEMuIiIiIiIiBzCgIuIiIiIiMghDLiIiIiIiIgcwoCLiIiIiIjIIQy4iIiIiIiIHHKJ3RvUT9BHREREREQ0l/EOFxERERERkUNsCbi+u/xyOzZDRERERBZY1yKauVyapmn1TgQRUa38jx+9ir/+6CQAwKUBe57fWucUERER0WzGLoVEREREREQOYcBFRERERETkEAZcREREREREDmHARURERERE5BAGXERERERERA5hwEVEREREROSQS+qdAKrOiY/T9U4CUVU++exXdd3/32ezhr//8meH6pSSmemS3/gNXPEf/329k0HT3NVfbqx3EoiIpg3OwzUD/eDlvfj5ydP1TgbRjOfSAM1V71TMPC4ALDiolP/479zoffzheieDiGhaYJfCGYjBFpE9NOaAVWGwRZP527/P4ld/l6l3MoiIpgV2KZzh2G2DZpIT4xe7wv7b3/mduqXj//7zP+Nf/r9/wW/+1r/Gb/yr36hbOmYSTfsX/NP//r8AgN/8zd9E05cW1jlFNB2Nf/JL/PM//7/1TgYR0bTCgGuG67zvu/VOAlHZ/uDRJ+XrHU931zElVKlf/d3f4/HePwYAuBfMZ95Dlh7v/R+8s0VEZMIONURERERERA5hwEVEREREROQQBlxEREREREQOYcBFRERERETkEAZcREREREREDmHARURERERE5BAGXERERERERA5xaZqm2bGhzdHT+NMjv7JjU0TTzneXX47d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xpRKpeTAD07PA0ZERETEgIuIZiUxhHl7ezuamprg9/vR0tKCJUuWIJfLIRQKcXoDIiIichwDLiKaldra2jAyMoJAIICJiQk5VK/P50MkEsGOHTvqnUQiIiKaAy6pdwKIiJzS2tqK1tbWeieDiGhW4YAIVAzPDWu8w0VEREREROQQBlxEREREREQOYcBFRERERETkEAZcREREREREDmHARURERERE5BAGXERERERERA5hwEVEREREROQQBlxEREREREQOYcBFRERERETkEAZcREREREREDmHARURERERE5BAGXERERERERA65xImNuh5+x4nNEs1qvG6oGjxv7MHjSERETuEdLiIiIiIiIofYFnB9d/nldm2KaNpx6vzmdTM32P07z9XzhseR5iqeq0Qzm0vTNK3eiaDKPPj08/J1+LH78Tu//Vt1TA1R+fTn7vanHqljSqga/P1oMjxHiIgKsUshERERERGRQxhwEREREREROYQBFxERERERkUMYcBERERERETmEARcREREREZFDGHARERERERE55JJ67PT0mU/rsdtZafzTs/it3/zXtm5z/rwv4D+4G2zdJhERERHRXFTzgKsvsg8nxn9R693OWrsGfuzIdr/zzXVYevV/cWTbRERERERzRc27FDLYsplD81Z/fOaXjmyXiIiIiGguqUuXQuHKxYvqufsZ68I//CMu/MM/Yt4X/g3mf+ELtm333Oef4++yOdu2R0REREQ019U14Hrw9zfUc/dkkvjg5xgY+mm9k0FERERENGtwlEIiIiIiIiKHMOAiIiIiIiJyCAMuIiIiIiIihzDgIiIiIiIicggDLiIiIiIiIocw4CIiIiIiInIIAy4iIiIiIiKHuDRN06a6kc3R0/jTI7+yIz1FfXf55dgdvNK27dUizTT78DykavC8sQePI81Vdp/7RFRbtgRcroffsSMtk9Je+Jpt26pVmmn24XlI1eB5Yw8eR5qr7Dz3iai22KWQiIiIiIjIIZfYvcHkk/a2wHi3Ot8CaXeaafapxXnI1svZpxZ3UObCecPjSHMV78ISzQ68w0VEREREROQQBlxEREREREQOYcBFRERERETkEAZcREREREREDmHARURERERE5BAGXERERERERA5hwEVEREREROQQBlxEREREREQOYcBFRERERETkEAZcREREREREDmHARURERERE5BAGXERERERERA6pWcB1fiKLBzf6MfZ+AgAwvC+KrruDtdr9jHN+IgvvZS54L3Phs0/Sk66z3ttUdFvD+6LwXubCnTe3VJ2evdvD8F7mwt7t4aq3QVQOl8sFl8tV72TMWUNDQ+jo6Kh3MshmiUQCLpcLfr/fke1Ho1F57Uaj0aq3Ew6HLfMA8V4ikZDrOPVdqL527tyJpqYm+ZuHw2H5m4fDrIPQzFSzgOvHr+7G+Yks/vOVV+GzT9Loursd6wJ31mr3M878BjeuXuIFABw/dtRynY+OHZGvz55RiwZm4yc+BACsWLXW5lQS0WySSCSwbt06pNPWeQlRMXv27LF8TVSJRCKB++67D6qqwuv1wufzYdGiRfVOFtGUXVKrHY2OHMS9j/8R5je48YvTJ3H1Ei9uvLmtVrufkVasWosTY0mMn/gQa28rvBuYOnIIAHD1Ei9OjCVx/NhRXPGlxoL13n97GADQvPzGqtPy9Vs34NTPj1X9eaJyaZpW7yQQUQXS6TTi8Th8Ph/Gx8cRj8eRTqfR2FhYHlVL0zS4XC7MmzcPW7ZssW27NL0cPnwYABAKhbBjxw7DMv7uNJPV9BmuPwyuk10KT4wl8eBGdgcoRQRIImAyG943AAB4ZOsLAICfDb1VsM75iSxOjCUBYEoB7hfmzceJv07Cc9W1VW+DiIhmnzfffBMAsHr1agQCAQDA7t27bd2HuOva3NwMADh2jA2As9nixYvrnQQiW3HQjGns2qXLAUAGTHqffZLG2TMq1t4WwJIVrQCsAzPR7fD61T7LbTzzWAfWe5vks2BddwdlUKz3at/zWHtbwBC0jb2fkM91De+LYnVTg9zG+YmsYb2uu4Ny+eqmBjzzWEfRLpBkL/GsQzabRXd3NxoaGuByudDU1GToDx8Oh2W/efMys2g0ipaWFtnHXqyfzWYN64l1hoaGLLczNDQEl8uFlpaLzxdaPb/h9/vle+Z9B4NBJBKF5ywAZLNZw/dqaGhAR0cHstmsYZuUP8YrV64EAMTjcctnZNLpNDo6OuQ5NNnxp7lh165dAACfz4eNGzcCAAYGBmzdx3PPPQefL1+OpVIpDAwM4IYbbrB1H3OZPj/UP0OlzzOLfUafnzY1NRme4RN5sD7PbmlpKXjOTzxj2NnZCQDo7Ow05EHmZ7iy2axMY3d3d0HaxPpNTU2WaSeqtZoFXNtfjyGZ0bBkRSuWrGhFMqNh++uxWu1+RtI/x2UOgsRzXd7WVQDyAdWFczmcPp4yrKee/AgA0LJyteH908dT+P2ve/Hmj/pw4dwErl/tw8LFHgzvG8Bdt6zE8D5jZtjRvQ0d3dss0zk6chBdd7fj0gUN+e6Nf53E/AY3gPyAHfntDeDSBQ0y8HvzR334/a97C9JLzhAFYk9PDzweD7xeL1RVRWdnJ8LhMPx+Pzo7O6EoimGZVUHm9/vR3t6OZDIp+9iL9UVgJ9x1110AgP3791umS7wv1ptMd3c32tvbkcvl4PP5oCgKBgYGsHLlyoJKv/jOnZ2dUFUVPp8PHo8HfX19Bekk4LrrroPXm89vFEWBz+fDddddJ5cPDQ3B6/Wir68PAOTxFMd/KgMl0MyVSCSgqio8Hg+am5vR3NwMj8cDVVWLNrSUw+PxyNfZbBajo6Po7e0FkG8Q6O/vR2tr65TTT0bd3d247777AEAGuH19ffjyl79c9NnO22+/XXYpnZiYkO/r8+BkMgmfzwev14tkMon29nbD4Dzz5s2TeQqQ//3NeZCe2+2Wzwr29PQglbpYl0in0zJw27NnD9xud5VHg8g+vMM1zYmBLn4+etjwvug+eK13BQBg1brbAADvH4wb1hsdOQgA+N2Wiy2B5yey2PIH38SFczls+E4IB8cnsP31GN5KjuOPo4O4dIGCrrvbyw6G3jsYx4bvhPBWchx7fzqKt5LjAPJBXdfd7QCAnj+J4K3kOLa/HsPB8Qk89L1eXDiXw5Y/+Kbhbhg5I5lMQlVVjI2NYXR0FKOjo+jv7weQb0k8evSoYVkkEgEAWbkWuru7EY/HoSiKXD8WiyGTyciC9Pbbb5frr1mzBgCKVsaHh4cN602mp6cH/f39GB8fRywWw8cffyy7MP3whz80rLt7924ZFKqqilgsJr9bMplEMll453gu27ZtG154Id89edmyZYjFYti2Ld/Ikk6ncccddyCXyyEUCmFiYgKxWAzj4+PyXGlvb+edrjnotddeAwA89thj8j3xeu/evRVvT9y1amq6OPKu2+3G6Oio7E64ZcsW3HvvvVWnmYrr6elBKBQy5LFerxe5XK7o6KWi/IjFYpiYmEAwmH/m/P7775d5cCaTkXnw2NiYbLzZuXMngHxX0VgshnvuuQcAcM899xjyICutra0y/xcBFgCZzq6uLgblNG0w4JrmxHNc5gEr3n97GJcuUHDlNfkCSAReIsAS3jsYx6ULFNntEACOvHMAZ8+ouH61D48/a3wo9cab27DpDx8HAPzFnp1lpzP0xNMF74nPP/S93oJBP+58cAuuX+3D2TMqjrxzoOz9UPV27NghKywADBWW73//+4ZlwWAQiqIgl8vJlsNsNouenh4AwE9+8hPD+m63G7FYDIqiIB6Py880NjYiEAggl8sVtHanUik5ElW5D9eHQiFDut1uNx544AEAF4M3kdZnnnkGQL5rk377wWBQtpRTeXbv3i3vKpofZNcfT3PQS7NbNpuVjSn6RhPxemBggCNezjDma9yct1v9nqFQyFAeAPlGmoGBASiKglgsZrjL1NzcLBt3nn322Sml96WXXpJpi0aj2LlzJ+LxODweDx555JEpbZvITgy4pjnxHJf++azTx1O4cC5nCGKuvKYZly5Q8N7BuLxjJLohmoeDF3fHfq99k+U+V/y625+5W2ExCxd7ZBdCPfH5r9+6wfJz4q6c1WAfZL+rrrqq6LJrrrmm4L1ly5YBAD7//HMAwMmTJwEAXq/XstXQ7XbLls14/OKd1vXr1wMo7Fb4+uuvAyi/OyEA3HTTTQXvibTkcjn53smTJ5HL5YoGcxs2WJ+TZO2DDz4AADz00EOWy8XxtPu5HZreDhw4YHmdNTY2yu5oYkANmhk2bdpU8J7b7cbatfl6xIEDhQ2kX/3qVwveE+sFg0HLLn2tra1QFAWqqhq6A1bK7XbjlVdeAQA8+eSTeOKJJwCwKyFNPzUbFp6qM7/BjetX+/DewTg++ySNK77UKLsNLr3BWPlcsWothvcN4KNjR3DjzW2yG6J4zks4+wsVAPDKSz/A/4rsKbrvC+dyRZfp/afGwkmXz09k5eefecy6G4IIDD8/f66s/dDUmFsgKyWG69U/W2EmRpbSjyCm71aobzkVlfNKgp+FCxdWlFZRSTCzc7jquUAE0FdccYXlcv3xTKVSUz7XaGYQz9A8+uijBcs2bdqEeDyOXbt2VTSc97x58wDwGq2XYg1zS5cuxcDAAM6fP1+wzCpf/vTTTwHkex5MNkG1aNSrVltbGwKBgCxT2JWQpiMGXDNAy8rVeO9gXM6zJboNXrN0mWG9/9q2HsP7BpA6cgg33twm1xPdDQUx6qHV6Id2+cXpk/L1e6bnymhmW7p06aTrnDt3MYh2u92yMBwaGkJbW5vsThgIBBxthZw/f75j256Lygmkplp5oplBzL0F5J/fa29vt1xPDJ7R1lbetCTiHOOw4PVhV2OJuCuuqipUVbVlm6WsX79eBlxWd9yI6o0B1wwgBrwYP/Ehln9tDd47GMfCxZ6CSY5FAHYylc/ojh87ioWLPfI5L2HhYg/OnlHx8v4Rw7Nddvp3l39Rvk5mOJHtbFLO/DcLFiww/C0Kw/3796OtrU12JxTdDZ1i1RpL1Svn7pW4Q0Gzm+gy5vF4DANc6I2Pj0NVVezdu7fsgIvqy64Jq8U2ent7HZ+wOJvNGgb06OjowJo1a9ilkKYVPsM1A+jn2RJ3jtbeFihY74ovNWLhYg/eOxiXz3mZn98CLnYBTP/NccfSrA8GOfT77CBGDyvVWnnmzBkAhXfBxCAcYmAL0RJZ7uiElbr22vwE3fqBNPT4IH9lxPM4n332meVy/fFkd8K5QQx2sHXrVsRiMct/osshB8+YOU6dOmX5vmhoW7RoUVnbsepe7pT7779fjqAaCoWQy+Vw//33O75fokow4Johrl/tw4mxpHwuS4xeaCYCrJ++lb+DYH7OC7g4WMXe7dajA4kJjbvuDlouL5cICouNdrh3exirmxqwd3vxCXZp+hB9+5PJpOXw3/oRy0QFXS8YDEJVVUSjUce7Ey5fvhyKoiCZTFpW9Pggf2XEXDgvvvii5XJxPMUQzTS7iS7BiqLIgXKstLa2ymc+K7nmNE1z/K4IWbOaMzGbzcrGKzGY0mREGVAs2M5ms2hoaEBLS8uUgvGhoSE5GuLTTz+Np59+Ws7POJV54IjsxoBrhhATF+/54/xQ12L0QrOVvlsAAMP78ncQzM95AcDXf28DLl2g4OwZFc881mGYB+v08RQeueNWAMBXfnfyZ3VK2bg5P1z3mz/qw1/8T2PQNbwvihf/qBMXzuUMc4TR9OV2u9HV1QUAuPXWWw0jS4kJLsXQ4VZ3OW65JX9uPvnkkwCc7U7odrvx+OP56Q0CgYChQE8kEnLIeLJmnhR68+bNcuhl81w80WhUzoEjhuin2U3MnVQq2BJEEL5r1y5H00T20M+NBRjz9lAoVHZ3w+bmZhl0mfNg/TbdbnfVXRiz2SzuuOMOAPlpT9xuN9xuN77//e8DAO644w5OcE/TBgOuGUIEJRfO5XD1Eq/lMOzAxUDs7BkVVy/xFjznBeRHPuz/8du4dIGCN3/Uh9uWfRkPbvTjzptb8O2vLZH7uPPBqbUwLlnRip4/yU+K2vPofVjvbcKDG/1Y722SEyJ/9+Eux54jI/tt27YNPp8PuVwOS5YsQUtLC/x+Py677DI5weWrr75q+dm2tjY5DPBkLeN22Lx5s5yM2ePxwO/3o6WlBStXriw50uJcJp6/SiaTaGlpQXd3N4D88xivvPIKFEVBX18fGhoa4Pf70dTUJAdLiEQiHBlsBojH43C5XCX/6Yn3wuGLPRHEnWzRiFLK5s2bAVwcPKPUdgEgHA5bpoNqw+v14r777kNTUxP8fj++/OUvy7z96acL59ss5dVXXy3Ig/XlhaIoBfP6VeL555+XjXz68uTee++VkzU///zzVW+fyE4MuGYIfVBy83/7VtH15je4cfUSL4DC+bf0rrymGX/2V0ls+E4Ily5owHsH4zgxlsTVS7zo+ZMI9v501JZ0r70tiJf3j2DtbQFcODeB9w7GcfaMirW3BfDy/hF0dBefRZ6mp1gshkgkIgvSeDwOr9eL3t7eggkuzUSh6HSwBVycsLO3txcejwfxeByqqqKrqwuxWMzx/c9Ezc3NiEQisjumfl6ttrY2JJNJhEIhAPmK+8TEBAKBAEZGRmrym1L9RaNR5HI5KIpS1kAYjY2N8HrzZdLevXudTh5N0QsvvCAnMo/H42hoaCgrb7eiz4O9Xi/i8biclLi3txcff/xx1Xe3EokEenp6AMByInsxsXJPT49lF3iiWnNpmjblIeRcD78jXyef/NpUN2fg3Xpx29oL9m3byTTT7FOL89DO7VJp6XQaHo8HHo8H4+Pjju3Hqd93rp03PI40V9XqHPX7/YjH4xgZGeGdaiIH8A4XEc1KDQ0NRe+6HD16FABkyzsRERGRUxhwEdGs1NDQgIGBAfm8iZBKpeTAD07PA0ZERETEgIuIZiUxhHl7e7t8ALylpQVLliyRI27xuSMiIiJyGgMuIpqV2traMDIygkAggImJCcTjcSSTSfh8PkQikSmNjkVERERUrkvqnQAiIqe0trbyAXAioklw5FYiZ/EOFxERERERkUMYcBERERERETmEARcREREREZFDGHARERERERE5hAEXERERERGRQxhwEREREREROYQBFxERERERkUMYcBERERERETmEARcREREREZFDGHAR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p6cHBoMBBoNBri+jBa0+31g7b9iOFKt4jo5eS0sLcnJyxp1tkUhL7OEioikpKSkpaK+LyMYVbIFMIiIiolBhwEVEU1JSUhIaGxv9sm51dHTIYS5arwNGRERExICLiKYkMXG7sLAQRqPRb8J1cXEx5x0RERGR5hhwEdGUlJeXh+bmZuTn56Ovr09OnjaZTGhoaEBdHTNYEhERkfbuiXQFiIi0kp2dzVTlREQxIDs7GyHIA0ekCfZwERERERERaYQBFxERERERkUYYcBEREREREWmEARcREREREZFGGHARERERERFphAEXERERERGRRhhwERERERERaYQBFxERERERkUYYcBEREREREWmEARcREREREZFGGHARERERERFp5J5Q77Bo0+1Q71JTytYzka7ClMB2nLi4TWxDGjueN6HBdiQiIq2wh4uIiIiIiEgjIQm4nls8KxS7CdsxwlHfaBTq35vtGF37oujFay802I4Uq3iuEk1ucUNDQ0PhPGDpazvlv2tffTGch464WP7dQ4ntOHnxs5vc+PnRSEq37gS+uqv4f/7vfBjmzI5shYiIogCHFBIREREREWmEARcREREREZFGGHARERERERFphAEXERERERGRRhhwERERERERaYQBFxERERERkUbuiXQFiIiIKLwuXf1Coz3HQeSF/+Of/xf++//7b42OM7l9Y+YM3DstPtLVIKIwYcBFREQUQ+objqKr+4rmx/mV7SN3/EUBbSl+Fv/njKRIV4OIwoBDComIiGJIOIItAIj7PxhtDcfxxfVIV4GIwoQ9XERERDFqwdw5Id3fwO1BDNweRPzX/gZJiQkh3fdU8L+cfej/y+1IV4OIwowBFxERUYwq/fGaSFchpjT85iQ++fz/jXQ1iCjMOKSQiIiIiIhIIwy4iIiIiIiINMKAi4iIiIiISCMMuIiIiIiIiDTCgIuIiIiIiEgjDLiIiIiIiIg0woCLiIiIiIhII3FDQ0NDE93JeuslvPvpl6GoT1DPLZ6FvQULQrKvcNQ3GoWyDQG2YyjEahvGGl57oRHqdgRity1jkRbnDzD57oGIKPxCEnDFbToTirqMaGjX0pDsJ1z1jUahakOA7RgKsdyGsYbXXmiEsh2B2G7LWBTq8weYfPdARBR+HFJIRERERESkkXtCvcPdu+4N6f6KNt0O6f58hbq+0UjrNgTYjqEQC20Ya3jthUY42hEA1C3sQZiKlK3h68UM9TkUzroTkXbYw0VERERERKQRBlxEREREREQaYcBFRERERESkEQZcREREREREGmHARUREREREpBEGXERERERERBphwEVERERERKQRBlxEREREREQaYcBFRERERESkEQZcREREREREGmHARUREREREpBEGXERERERERBoJW8A16OxHjbkU3S3tAIA2axN+UVARrsOHhCVzHYriFLRZm0YsUxSn4GbP9YBlbvZcl2UGnf1aVXdS6e24BEvmOrYHyWuDIuPCibM4VLI90tUgAKVPmaHMiEP7uRZN9r9KMUKZEYdVinFC+1FmxEGZEYf9tdUhqtnUIz7L/bXVaD/XItss1uzevRtGoxFxcXGIi4tDdXV10Nerq6u9yhBNZmELuFr2HsdtZz9mLZyHmz3XsaewAlnrVoTr8CGRmvsIAODyx58H3D7o7Mc1tUv+fOV8Z8Byf/79VQBAipKKafrE0FZykjpSXou5mWwPokjqbmlH7YoXgj4soqmj/VwLeq86AAC9Vx2aBXVEQktLC37605/C4XBAURSYTCbMmTMn6OtEU8k94TrQH061YeU/F2GaPhFfXryCFCUVi/KWhOvwIWFckg4AuNrWFXD7lU8vAHAHUtfULlz++HNkFuT6les+2wHgbgBHQKe9FTtvfhjpalAU2D2kRroKRFOe7VeHAABr/qEYh/+1HrZfHULGI9kRrtXUVfueDaVPmXFvQiIyHsnGnl83Y+/OrZGuVlh98sknAIDi4mLU1dXJ10UPlu/rALB58+bwVZBIQ2Gdw1W74gU5pPCa2oUac2k4Dz9h8xYvAuCue6Chb7/7dTMA4KldLwJA0KGHXU3nAACLvv+oFtWctF6c8d1IV4GIaMrr73Oi6agVAFD8ymsAgMP/Wo/+PmckqzXl/bGnG/MfSAMA9Pwh8AiYWDB37twxvU40FTBpxhhM0yciRUkFAHx58Yrf9q6mc4jXJcCYnYE0UxbuuAbQ23HJq4znsENjdobXtps913GoZDu2GFfJeSy/KKiQQWqsqTGXynlu4t9bjKu8AtlBZz/s1fu95s5ZMtcNO88u1hTFKagxl2LQ2Y9jlXXYlLRctqW9er8sZ6/eL889322+2qxNXm0uyvs+iBBlLpw4G3A/F06clZ+ZZ31953CJzz/QsYe7RsT5IX6vTUnL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KPR2XJKJH7ReB4yIiIiICx8T0ZRUUPMSale8gD2FFTi+pQ73Gb+J21+tmwcAS4vXcN4RERERaY4BFxFNSYvyluCl5j04/dZ76Go6h057KwB3kpusZ3/IYIuIiIjCggEXEU1ZxuwMpionIiKiiOIcLiIiIiIiIo0w4CIiIiIiItIIAy4iIiIiIiKNMOAiIiIiIiLSCAMuIiIiIiIijTDgIiIiIiIi0ggDLiIiIiIiIo0w4CIiIiIiItIIAy4iIiIiIiKNMOAiIiIiIiLSCAMuIiIiIiIijTDgIiIiIiIi0sg9od5h0abbod6lpiZbfaMV23Hi2IY0HjxvQkfZeibSVaBJjucQEQXCHi4iIiIiIiKNhCTgem7xrFDsJmzHCEd9o1Gof2+2Y3Tti6IXr73Q0OL3jtW2jEVafdaT7R6IiMIvbmhoaCicByx9baf8d+2rL4bz0BEXy797KLEdJy9+dpMbP7/Jb7f1GC5c7pE/83MML15DRLGJQwqJiIiIiIg0woCLiIiIiIhIIwy4iIiIiIiINMKAi4iIiIiISCMMuIiIiIiIiDTCgIuIiIiIiEgj90S6AkREROTv0tUvQr7P23f+qvkxImHB3DmRrgIRUVAMuIiIiKJMfcNRdHVf0fw4tf92WPNjhMP9Kd9E2bq/j3Q1iIgC4pBCIiKiKBOOYGsquXztj/jf//Vfka4GEVFA7OEiIiKKYqEeLjdwexD/+7/+G/rpCSHdbyRcvvZHDA0NRboaRETDYsBFREQUxUp/vCbSVYhaL75ew54tIop6HFJIRERERESkEQZcREREREREGmHARUREREREpBEGXERERERERBphwEVERERERKQRBlxEREREREQaiRsKwQIW662X8O6nX4aiPkE9t3gW9hYsCMm+wlHfaBTKNgTYjqEQq20Ya3jthQavveg02T6XyXg9hrrORBReIQm44jadCUVdRjS0a2lI9hOu+kajULUhwHYMhVhuw1jDay80eO1Fp8n2uUzG6zGUdSai8OKQQiIiIiIiIo3cE+od7t51b0j3V7Tpdkj35yvU9Y1GWrchwHYMhVhow1jDay80tG5HdQt7DsZD2aptz06oPxet6wtMvnsgIgoP9nARERERERFphAEXERERERGRRhhwERERERERaYQBFxERERERkUYYcBEREREREWmEARcREREREZFGGHARERER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LHI4pue6WovylsjvKMD9YGOwbwBKfi5eat4TcxnytCaGmI92nTrRgyySZxCNldVqRVVVFQwGA+x2OxwOB4qLi6GqwYN1m82GhoYGKIoCVVVht9uhKAqqqqpgs9lCFgTV1dWhoaEBJpNJHgdwL6DscDiQl5cXkuMQaSVuaGhoaMI72XRG/nv3rtCmYS7adDfL2NCupSHZp5b1jUZatCHAdgyFWGvDaHGz5zoqDU9gpiEZW7uPaXYcXnuhwWsvOk22z2UyXo9a1ZmIwos9XEQ0JW1KWh400cyV850A3L3ORERERFpiwEVEU9K0pASojU0yc6LQ23FJJn7Qeh0wIiIiIibNIKIpqaDmJdSueAF7CitwfEsd7jN+0ysRzdLiNZx3RERERJpjwEVEU9KivCV4qXkPTr/1HrqazslMimmmLGQ9+0MGW0RERBQWDLiIaMoyZmcwVTkRERFFFOdwERERERERaYQBFxERERERkUYYcBEREREREWmEARcREREREZFGGHARERERERFphAEXERERERGRRhhwERERERERaYQBFxERERERkUYYcBEREREREWmEARcREREREZFGGHARERERERFp5J5Q77Bo0+1Q71JTk62+0YrtOHFsQxoPnjcTxzaMTpPxc5mMdSYi7bGHi4iIiIiISCMhCbieWzwrFLsJ2zHCUd9oFOrfm+0YXfui6MVrLzR47UWnyfa5TMbrkecr0eQWNzQ0NBTpShAREREREU1FHFJIRERERESkEQZcREREREREGmHARUREREREpBEGXERERERERBphwEVERERERKQRBlxEREREREQaYcBFRERERESkkf8f6RFyejO1/dYAAAAASUVORK5CYII="},"pipeline1.png":{"image/png":"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"}}},{"cell_type":"code","source":"import spacy\nimport pandas as pd\n\ndata = pd.read_csv('../input/nlp-getting-started/train.csv')\n\n# 1. Loading the language library\nnlp = spacy.load('en_core_web_sm')\n\n# 2. Building a Pipline Object\ndoc = nlp(u'''\nTesla will start selling cars in India next year, government says. \nElon Mask (CEO of Tesla) is now the richest men in the world.\n''')\n\n\n# 3. Using Tokens\nfor token in doc:\n    print(f\"{token.text:{12}}{token.pos_:{12}}{token.dep_:{12}}{token.lemma_}\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-02-01T18:11:35.253909Z","iopub.execute_input":"2023-02-01T18:11:35.254436Z","iopub.status.idle":"2023-02-01T18:11:47.456745Z","shell.execute_reply.started":"2023-02-01T18:11:35.254329Z","shell.execute_reply":"2023-02-01T18:11:47.455565Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data[data.target == 1]['text'][1]","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.458927Z","iopub.execute_input":"2023-02-01T18:11:47.459911Z","iopub.status.idle":"2023-02-01T18:11:47.482333Z","shell.execute_reply.started":"2023-02-01T18:11:47.459863Z","shell.execute_reply":"2023-02-01T18:11:47.481126Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data[data.target == 1]['text'][300]","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.483552Z","iopub.execute_input":"2023-02-01T18:11:47.483864Z","iopub.status.idle":"2023-02-01T18:11:47.493899Z","shell.execute_reply.started":"2023-02-01T18:11:47.483837Z","shell.execute_reply":"2023-02-01T18:11:47.493001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data[data.target == 0]['text']","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.496214Z","iopub.execute_input":"2023-02-01T18:11:47.496540Z","iopub.status.idle":"2023-02-01T18:11:47.507517Z","shell.execute_reply.started":"2023-02-01T18:11:47.496511Z","shell.execute_reply":"2023-02-01T18:11:47.506294Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"nlp.pipeline","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.508934Z","iopub.execute_input":"2023-02-01T18:11:47.509619Z","iopub.status.idle":"2023-02-01T18:11:47.516662Z","shell.execute_reply.started":"2023-02-01T18:11:47.509587Z","shell.execute_reply":"2023-02-01T18:11:47.515559Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"nlp.pipe_names","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.517929Z","iopub.execute_input":"2023-02-01T18:11:47.518285Z","iopub.status.idle":"2023-02-01T18:11:47.530349Z","shell.execute_reply.started":"2023-02-01T18:11:47.518243Z","shell.execute_reply":"2023-02-01T18:11:47.529308Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"text = \"\"\"\nElon Musk, the billionaire CEO of Tesla and SpaceX, is now the richest person in the world, surpassing former titleholder and Amazon chief Jeff Bezos with a net worth of $189.7 billion, according to Forbes’s real-time billionaire net-worth estimates on Jan. 8, 2021 at 1pm. Since March, Musk’s wealth has grown almost seven-fold, up a staggering $163.1 billion.\n\"\"\"\ndoc = nlp(text)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.531456Z","iopub.execute_input":"2023-02-01T18:11:47.532279Z","iopub.status.idle":"2023-02-01T18:11:47.559915Z","shell.execute_reply.started":"2023-02-01T18:11:47.532247Z","shell.execute_reply":"2023-02-01T18:11:47.558792Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"quote = doc[30:50]\nprint(quote)\nprint(type(quote))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.561096Z","iopub.execute_input":"2023-02-01T18:11:47.561415Z","iopub.status.idle":"2023-02-01T18:11:47.567302Z","shell.execute_reply.started":"2023-02-01T18:11:47.561387Z","shell.execute_reply":"2023-02-01T18:11:47.565969Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i, sentence in enumerate(doc.sents, 1):\n    print(f\"{i} - {sentence}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.569091Z","iopub.execute_input":"2023-02-01T18:11:47.569500Z","iopub.status.idle":"2023-02-01T18:11:47.578019Z","shell.execute_reply.started":"2023-02-01T18:11:47.569462Z","shell.execute_reply":"2023-02-01T18:11:47.576824Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Named Entity","metadata":{}},{"cell_type":"code","source":"for entity in doc.ents:\n    print(f\"{entity.text:-<{20}}{entity.label_:-<{20}}{str(spacy.explain(entity.label_))}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.583957Z","iopub.execute_input":"2023-02-01T18:11:47.584639Z","iopub.status.idle":"2023-02-01T18:11:47.591935Z","shell.execute_reply.started":"2023-02-01T18:11:47.584603Z","shell.execute_reply":"2023-02-01T18:11:47.590736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Noun Chunks","metadata":{}},{"cell_type":"code","source":"for chunk in doc.noun_chunks:\n    print(chunk.text)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.593527Z","iopub.execute_input":"2023-02-01T18:11:47.594152Z","iopub.status.idle":"2023-02-01T18:11:47.603220Z","shell.execute_reply.started":"2023-02-01T18:11:47.594119Z","shell.execute_reply":"2023-02-01T18:11:47.602310Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Built-in Visualizers","metadata":{}},{"cell_type":"code","source":"from spacy import displacy\n\ndisplacy.render(doc, style='dep', jupyter=True, options={'distance':90})","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.604601Z","iopub.execute_input":"2023-02-01T18:11:47.605200Z","iopub.status.idle":"2023-02-01T18:11:47.621258Z","shell.execute_reply.started":"2023-02-01T18:11:47.605166Z","shell.execute_reply":"2023-02-01T18:11:47.620220Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Visualizing the entity recongnizer","metadata":{}},{"cell_type":"code","source":"displacy.render(doc, style='ent', jupyter=True)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.622638Z","iopub.execute_input":"2023-02-01T18:11:47.623433Z","iopub.status.idle":"2023-02-01T18:11:47.630192Z","shell.execute_reply.started":"2023-02-01T18:11:47.623401Z","shell.execute_reply":"2023-02-01T18:11:47.629233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Stemming\n\n- Often when searching text for a certain keyword, it helps if the search returns variations of the word. For instance, searching for 'boat' might return 'boats' and 'boating'. Here, 'boat' would be the stem for [boat, boater, boating, boats].\n","metadata":{}},{"cell_type":"code","source":"import nltk\nfrom nltk.stem.porter import PorterStemmer\n\nwords = ['run', 'runner', 'ran', 'runs', 'easily', 'fairly', 'fairness']\np_stemmer = PorterStemmer()\n\nfor word in words:\n    print(f\"{word} --------> {p_stemmer.stem(word)}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:47.631544Z","iopub.execute_input":"2023-02-01T18:11:47.632202Z","iopub.status.idle":"2023-02-01T18:11:48.287377Z","shell.execute_reply.started":"2023-02-01T18:11:47.632170Z","shell.execute_reply":"2023-02-01T18:11:48.286074Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from nltk.stem.snowball import SnowballStemmer\n\nwords = ['run', 'runner', 'ran', 'runs', 'easily', 'fairly', 'fairness']\ns_stemmer = SnowballStemmer(language='english')\n\nfor word in words:\n    print(f\"{word} --------> {s_stemmer.stem(word)}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:48.288827Z","iopub.execute_input":"2023-02-01T18:11:48.289436Z","iopub.status.idle":"2023-02-01T18:11:48.295833Z","shell.execute_reply.started":"2023-02-01T18:11:48.289401Z","shell.execute_reply":"2023-02-01T18:11:48.294796Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"words = ['generous', 'generation', 'generously', 'generate']\n\nprint('===============SNOWBALL STEMMER================')\nfor word in words:\n    print(f\"{word} --------> {s_stemmer.stem(word)}\")\n    \nprint('===============PORTER STEMMER================')\nfor word in words:\n    print(f\"{word} --------> {p_stemmer.stem(word)}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:48.297549Z","iopub.execute_input":"2023-02-01T18:11:48.298687Z","iopub.status.idle":"2023-02-01T18:11:48.309546Z","shell.execute_reply.started":"2023-02-01T18:11:48.298636Z","shell.execute_reply":"2023-02-01T18:11:48.308183Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Lemmatization\n\n- In contrast to stemming, lemmatization looks beyond word reduction, and considers a language's full vocabulary to apply a morphological analysis to words. The lemma of 'was' is 'be' and the lemma of 'meeting' might be 'meet' or 'meeting' depending on its use in a sentence. Lemmatization is typically seen as much more informative than simple stemming, which is why Spacy has opted to only have Lemmatization available instead of Stemming. ","metadata":{}},{"cell_type":"code","source":"text = nlp(u\"I am a runner running in a race because I love to run since I ran everyday\")\n\nfor token in text:\n    print(f\"{token.text:{12}}{token.pos_:{10}}\\t{token.lemma:{20}}\\t{token.lemma_}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:48.312268Z","iopub.execute_input":"2023-02-01T18:11:48.313350Z","iopub.status.idle":"2023-02-01T18:11:48.333532Z","shell.execute_reply.started":"2023-02-01T18:11:48.313296Z","shell.execute_reply":"2023-02-01T18:11:48.332714Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Stop Words\n\n- Words like 'a' and 'the' appear so frequently that they don't require tagging as thoroughly as nouns, verbs and modifiers. We call these stop words, and they can be filtered from text to be processed. Spacy holds a built-in list of some `326` English stop words.","metadata":{}},{"cell_type":"code","source":"nlp = spacy.load('en_core_web_sm')\n\nprint(nlp.Defaults.stop_words)\nprint(len(nlp.Defaults.stop_words))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:48.334755Z","iopub.execute_input":"2023-02-01T18:11:48.335271Z","iopub.status.idle":"2023-02-01T18:11:49.039048Z","shell.execute_reply.started":"2023-02-01T18:11:48.335238Z","shell.execute_reply":"2023-02-01T18:11:49.037871Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"words = ['is', 'and', 'Tesla', 'you', 'IS', 'AND']\n\nfor word in words:\n    print(f\"{word}: is stop word: {nlp.vocab[word].is_stop}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:49.040875Z","iopub.execute_input":"2023-02-01T18:11:49.041236Z","iopub.status.idle":"2023-02-01T18:11:49.047572Z","shell.execute_reply.started":"2023-02-01T18:11:49.041204Z","shell.execute_reply":"2023-02-01T18:11:49.046400Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# We can add our own stop word\nnlp.Defaults.stop_words.add('btw')\nnlp.Defaults.stop_words.add('u')\n\nsentence = 'Where was u ? I was looking for you btw session...'\nfor word in sentence.split():\n    print(f\"{word:{20}}: is stop word: {nlp.vocab[word].is_stop}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:49.049319Z","iopub.execute_input":"2023-02-01T18:11:49.049681Z","iopub.status.idle":"2023-02-01T18:11:49.060013Z","shell.execute_reply.started":"2023-02-01T18:11:49.049645Z","shell.execute_reply":"2023-02-01T18:11:49.058650Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# We can also remove stop word\nnlp.vocab['for'].is_stop = False\nsentence = 'Where was u ? I was looking for you btw session...'\nfor word in sentence.split():\n    print(f\"{word:{20}}: is stop word: {nlp.vocab[word].is_stop}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:49.061541Z","iopub.execute_input":"2023-02-01T18:11:49.061981Z","iopub.status.idle":"2023-02-01T18:11:49.070621Z","shell.execute_reply.started":"2023-02-01T18:11:49.061949Z","shell.execute_reply":"2023-02-01T18:11:49.069434Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Phrase Matching and Vocabulary\n\n- We can think of this as a powerful version of Regular Expression where we actually take parts of speech into account for our patterns.","metadata":{}},{"cell_type":"code","source":"from spacy.matcher import Matcher\n\nmatcher = Matcher(nlp.vocab)\npattern_1 = [{'LOWER': 'solarpower'}] # ----> SolarPower\npattern_2 = [{'LOWER': 'solar'}, {'IS_PUNCT': True}, {'LOWER': 'power'}] # ---> Solar-Power\npattern_3 = [{'LOWER': 'solar'}, {'LOWER': 'power'}] # ---> Solar Power\n\nmatcher.add('SolarPower', [pattern_1, pattern_2, pattern_3])\n\ntext = u'''\nSolar Power is the conversion of energy from sunlight into electricity, \neither directly using photovoltaics (PV), indirectly using concentrated SolarPower, \nor a combination. Concentrated Solar-Power systems use lenses or mirrors and solar \ntracking systems to focus a large area of sunlight into a small beam.\n'''\ndoc = nlp(text)\nfound_matches = matcher(doc)\nprint(found_matches)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:12:58.248141Z","iopub.execute_input":"2023-02-01T18:12:58.249176Z","iopub.status.idle":"2023-02-01T18:12:58.279883Z","shell.execute_reply.started":"2023-02-01T18:12:58.249135Z","shell.execute_reply":"2023-02-01T18:12:58.278584Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Word Vectors and Semantic Similarity\n\n- Spacy can compare two objects and predict similarity, `Doc.similarity()`, `Span.similarity()` and `Token.similarity()`. They take another object and return a similarity score (`0` to `1`).\n- `Important`: needs a model that has word vectors included, for example: `en_core_web_md`, `en_core_web_lg`, not `en_core_web_sm`.","metadata":{}},{"cell_type":"code","source":"!python3 -m spacy download en_core_web_md","metadata":{"_kg_hide-output":true,"_kg_hide-input":true,"execution":{"iopub.status.busy":"2023-02-01T18:13:07.675364Z","iopub.execute_input":"2023-02-01T18:13:07.676188Z","iopub.status.idle":"2023-02-01T18:13:29.236229Z","shell.execute_reply.started":"2023-02-01T18:13:07.676146Z","shell.execute_reply":"2023-02-01T18:13:29.235156Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import en_core_web_md\n\n# Load a larger model with vectors\nnlp = en_core_web_md.load()\n\n# Compare two documents\ndoc_1 = nlp(\"I like fast food\")\ndoc_2 = nlp(\"I like pizza\")\n\nprint(doc_1.similarity(doc_2))\nprint(doc_2.similarity(doc_1))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:13:29.238604Z","iopub.execute_input":"2023-02-01T18:13:29.239177Z","iopub.status.idle":"2023-02-01T18:13:31.278667Z","shell.execute_reply.started":"2023-02-01T18:13:29.239105Z","shell.execute_reply":"2023-02-01T18:13:31.277692Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Compare two tokens\ndoc = nlp(\"I like pizza and pasta\")\n\ntoken_1 = doc[2]\ntoken_2 = doc[4]\nprint(token_1.similarity(token_2))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:13:33.991378Z","iopub.execute_input":"2023-02-01T18:13:33.991843Z","iopub.status.idle":"2023-02-01T18:13:34.008547Z","shell.execute_reply.started":"2023-02-01T18:13:33.991808Z","shell.execute_reply":"2023-02-01T18:13:34.007224Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Compare a span with a document\nspan = nlp(\"I like pizza and pasta\")[2:5]\ndoc = nlp(\"McDonalds sells burgers\")\n\nprint(span.similarity(doc))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:13:46.887447Z","iopub.execute_input":"2023-02-01T18:13:46.887897Z","iopub.status.idle":"2023-02-01T18:13:46.912080Z","shell.execute_reply.started":"2023-02-01T18:13:46.887865Z","shell.execute_reply":"2023-02-01T18:13:46.910806Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## View token tags\n\nRecall that we can obtain a particular token by its index position.\n- To view the description of either type of tag use `spacy.explain(tag)`","metadata":{}},{"cell_type":"code","source":"text = u'''\nSince March, Musk’s wealth has grown almost seven-fold, up a staggering $163.1 billion.\n'''\ndoc = nlp(text)\nfor token in doc:\n    print(f\"{token.text:{10}} {token.pos_:{8}} {token.tag_:{6}} {spacy.explain(token.tag_)}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:13:56.937641Z","iopub.execute_input":"2023-02-01T18:13:56.938045Z","iopub.status.idle":"2023-02-01T18:13:56.959421Z","shell.execute_reply.started":"2023-02-01T18:13:56.938014Z","shell.execute_reply":"2023-02-01T18:13:56.958170Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Coarse-grained Part-of-speech Tags\nEvery token is assigned a POS Tag from the following list:\n\n\n<table><tr><th>POS</th><th>DESCRIPTION</th><th>EXAMPLES</th></tr>\n    \n<tr><td>ADJ</td><td>adjective</td><td>**big, old, green, incomprehensible, first**</td></tr>\n<tr><td>ADP</td><td>adposition</td><td>*in, to, during*</td></tr>\n<tr><td>ADV</td><td>adverb</td><td>*very, tomorrow, down, where, there*</td></tr>\n<tr><td>AUX</td><td>auxiliary</td><td>*is, has (done), will (do), should (do)*</td></tr>\n<tr><td>CONJ</td><td>conjunction</td><td>*and, or, but*</td></tr>\n<tr><td>CCONJ</td><td>coordinating conjunction</td><td>*and, or, but*</td></tr>\n<tr><td>DET</td><td>determiner</td><td>*a, an, the*</td></tr>\n<tr><td>INTJ</td><td>interjection</td><td>*psst, ouch, bravo, hello*</td></tr>\n<tr><td>NOUN</td><td>noun</td><td>*girl, cat, tree, air, beauty*</td></tr>\n<tr><td>NUM</td><td>numeral</td><td>*1, 2017, one, seventy-seven, IV, MMXIV*</td></tr>\n<tr><td>PART</td><td>particle</td><td>*'s, not,*</td></tr>\n<tr><td>PRON</td><td>pronoun</td><td>*I, you, he, she, myself, themselves, somebody*</td></tr>\n<tr><td>PROPN</td><td>proper noun</td><td>*Mary, John, London, NATO, HBO*</td></tr>\n<tr><td>PUNCT</td><td>punctuation</td><td>*., (, ), ?*</td></tr>\n<tr><td>SCONJ</td><td>subordinating conjunction</td><td>*if, while, that*</td></tr>\n<tr><td>SYM</td><td>symbol</td><td>*$, %, §, ©, +, −, ×, ÷, =, :), 😝*</td></tr>\n<tr><td>VERB</td><td>verb</td><td>*run, runs, running, eat, ate, eating*</td></tr>\n<tr><td>X</td><td>other</td><td>*sfpksdpsxmsa*</td></tr>\n<tr><td>SPACE</td><td>space</td></tr>\n\n***\n","metadata":{}},{"cell_type":"markdown","source":"___\n## Fine-grained Part-of-speech Tags\nTokens are subsequently given a fine-grained tag as determined by morphology:\n<table>\n<tr><th>POS</th><th>Description</th><th>Fine-grained Tag</th><th>Description</th><th>Morphology</th></tr>\n<tr><td>ADJ</td><td>adjective</td><td>AFX</td><td>affix</td><td>Hyph=yes</td></tr>\n<tr><td>ADJ</td><td></td><td>JJ</td><td>adjective</td><td>Degree=pos</td></tr>\n<tr><td>ADJ</td><td></td><td>JJR</td><td>adjective, comparative</td><td>Degree=comp</td></tr>\n<tr><td>ADJ</td><td></td><td>JJS</td><td>adjective, superlative</td><td>Degree=sup</td></tr>\n<tr><td>ADJ</td><td></td><td>PDT</td><td>predeterminer</td><td>AdjType=pdt PronType=prn</td></tr>\n<tr><td>ADJ</td><td></td><td>PRP\\$</td><td>pronoun, possessive</td><td>PronType=prs Poss=yes</td></tr>\n<tr><td>ADJ</td><td></td><td>WDT</td><td>wh-determiner</td><td>PronType=int rel</td></tr>\n<tr><td>ADJ</td><td></td><td>WP\\$</td><td>wh-pronoun, possessive</td><td>Poss=yes PronType=int rel</td></tr>\n<tr><td>ADP</td><td>adposition</td><td>IN</td><td>conjunction, subordinating or preposition</td><td></td></tr>\n<tr><td>ADV</td><td>adverb</td><td>EX</td><td>existential there</td><td>AdvType=ex</td></tr>\n<tr><td>ADV</td><td></td><td>RB</td><td>adverb</td><td>Degree=pos</td></tr>\n<tr><td>ADV</td><td></td><td>RBR</td><td>adverb, comparative</td><td>Degree=comp</td></tr>\n<tr><td>ADV</td><td></td><td>RBS</td><td>adverb, superlative</td><td>Degree=sup</td></tr>\n<tr><td>ADV</td><td></td><td>WRB</td><td>wh-adverb</td><td>PronType=int rel</td></tr>\n<tr><td>CONJ</td><td>conjunction</td><td>CC</td><td>conjunction, coordinating</td><td>ConjType=coor</td></tr>\n<tr><td>DET</td><td>determiner</td><td>DT</td><td>determiner</td><td></td></tr>\n<tr><td>INTJ</td><td>interjection</td><td>UH</td><td>interjection</td><td></td></tr>\n<tr><td>NOUN</td><td>noun</td><td>NN</td><td>noun, singular or mass</td><td>Number=sing</td></tr>\n<tr><td>NOUN</td><td></td><td>NNS</td><td>noun, plural</td><td>Number=plur</td></tr>\n<tr><td>NOUN</td><td></td><td>WP</td><td>wh-pronoun, personal</td><td>PronType=int rel</td></tr>\n<tr><td>NUM</td><td>numeral</td><td>CD</td><td>cardinal number</td><td>NumType=card</td></tr>\n<tr><td>PART</td><td>particle</td><td>POS</td><td>possessive ending</td><td>Poss=yes</td></tr>\n<tr><td>PART</td><td></td><td>RP</td><td>adverb, particle</td><td></td></tr>\n<tr><td>PART</td><td></td><td>TO</td><td>infinitival to</td><td>PartType=inf VerbForm=inf</td></tr>\n<tr><td>PRON</td><td>pronoun</td><td>PRP</td><td>pronoun, personal</td><td>PronType=prs</td></tr>\n<tr><td>PROPN</td><td>proper noun</td><td>NNP</td><td>noun, proper singular</td><td>NounType=prop Number=sign</td></tr>\n<tr><td>PROPN</td><td></td><td>NNPS</td><td>noun, proper plural</td><td>NounType=prop Number=plur</td></tr>\n<tr><td>PUNCT</td><td>punctuation</td><td>-LRB-</td><td>left round bracket</td><td>PunctType=brck PunctSide=ini</td></tr>\n<tr><td>PUNCT</td><td></td><td>-RRB-</td><td>right round bracket</td><td>PunctType=brck PunctSide=fin</td></tr>\n<tr><td>PUNCT</td><td></td><td>,</td><td>punctuation mark, comma</td><td>PunctType=comm</td></tr>\n<tr><td>PUNCT</td><td></td><td>:</td><td>punctuation mark, colon or ellipsis</td><td></td></tr>\n<tr><td>PUNCT</td><td></td><td>.</td><td>punctuation mark, sentence closer</td><td>PunctType=peri</td></tr>\n<tr><td>PUNCT</td><td></td><td>''</td><td>closing quotation mark</td><td>PunctType=quot PunctSide=fin</td></tr>\n<tr><td>PUNCT</td><td></td><td>\"\"</td><td>closing quotation mark</td><td>PunctType=quot PunctSide=fin</td></tr>\n<tr><td>PUNCT</td><td></td><td>``</td><td>opening quotation mark</td><td>PunctType=quot PunctSide=ini</td></tr>\n<tr><td>PUNCT</td><td></td><td>HYPH</td><td>punctuation mark, hyphen</td><td>PunctType=dash</td></tr>\n<tr><td>PUNCT</td><td></td><td>LS</td><td>list item marker</td><td>NumType=ord</td></tr>\n<tr><td>PUNCT</td><td></td><td>NFP</td><td>superfluous punctuation</td><td></td></tr>\n<tr><td>SYM</td><td>symbol</td><td>#</td><td>symbol, number sign</td><td>SymType=numbersign</td></tr>\n<tr><td>SYM</td><td></td><td>\\$</td><td>symbol, currency</td><td>SymType=currency</td></tr>\n<tr><td>SYM</td><td></td><td>SYM</td><td>symbol</td><td></td></tr>\n<tr><td>VERB</td><td>verb</td><td>BES</td><td>auxiliary \"be\"</td><td></td></tr>\n<tr><td>VERB</td><td></td><td>HVS</td><td>forms of \"have\"</td><td></td></tr>\n<tr><td>VERB</td><td></td><td>MD</td><td>verb, modal auxiliary</td><td>VerbType=mod</td></tr>\n<tr><td>VERB</td><td></td><td>VB</td><td>verb, base form</td><td>VerbForm=inf</td></tr>\n<tr><td>VERB</td><td></td><td>VBD</td><td>verb, past tense</td><td>VerbForm=fin Tense=past</td></tr>\n<tr><td>VERB</td><td></td><td>VBG</td><td>verb, gerund or present participle</td><td>VerbForm=part Tense=pres Aspect=prog</td></tr>\n<tr><td>VERB</td><td></td><td>VBN</td><td>verb, past participle</td><td>VerbForm=part Tense=past Aspect=perf</td></tr>\n<tr><td>VERB</td><td></td><td>VBP</td><td>verb, non-3rd person singular present</td><td>VerbForm=fin Tense=pres</td></tr>\n<tr><td>VERB</td><td></td><td>VBZ</td><td>verb, 3rd person singular present</td><td>VerbForm=fin Tense=pres Number=sing Person=3</td></tr>\n<tr><td>X</td><td>other</td><td>ADD</td><td>email</td><td></td></tr>\n<tr><td>X</td><td></td><td>FW</td><td>foreign word</td><td>Foreign=yes</td></tr>\n<tr><td>X</td><td></td><td>GW</td><td>additional word in multi-word expression</td><td></td></tr>\n<tr><td>X</td><td></td><td>XX</td><td>unknown</td><td></td></tr>\n<tr><td>SPACE</td><td>space</td><td>_SP</td><td>space</td><td></td></tr>\n<tr><td></td><td></td><td>NIL</td><td>missing tag</td><td></td></tr>\n</table>","metadata":{}},{"cell_type":"markdown","source":"## Working with POS Tags\n\nIn english language, the same string of characters can have different meanings, even within the same sentence. For this reason, morphology is important.","metadata":{}},{"cell_type":"code","source":"doc = nlp(\"I read books on NLP.\")\nr = doc[1]\nprint(f\"{r.text:{10}} {r.pos_:{8}} {r.tag_:{6}} {spacy.explain(r.tag_)}\\n\")\n\ndoc = nlp(\"I am reading a book on NLP.\")\nr = doc[2]\nprint(f\"{r.text:{10}} {r.pos_:{8}} {r.tag_:{6}} {spacy.explain(r.tag_)}\")","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:14:06.013675Z","iopub.execute_input":"2023-02-01T18:14:06.014138Z","iopub.status.idle":"2023-02-01T18:14:06.044244Z","shell.execute_reply.started":"2023-02-01T18:14:06.014099Z","shell.execute_reply":"2023-02-01T18:14:06.043065Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Counting POS Tags\n\nThe `Doc.count_by()` method accepts a specific token attribute as its argument, and returns a frequency count of the given attribute as a dictionary object.","metadata":{}},{"cell_type":"code","source":"doc = nlp(\"The quick brown fox jumped over the lazy dog's back.\")\n\npos_count = doc.count_by(spacy.attrs.POS)\nprint(pos_count)\nnew = {}\nfor key, value in pos_count.items():\n    new[doc.vocab[key].text] = value\n    \nprint(new)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:14:09.806904Z","iopub.execute_input":"2023-02-01T18:14:09.807724Z","iopub.status.idle":"2023-02-01T18:14:09.828066Z","shell.execute_reply.started":"2023-02-01T18:14:09.807681Z","shell.execute_reply":"2023-02-01T18:14:09.826833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Gensim\n\nGensim is an open-source library for unsupervised topic modeling and natural language processing, using modern statistical machine learning. \n\n## Document \nIn Gensim, a document is an object of the text sequence type (commonly known as str in Python 3). A document could be anything from a short 140 character tweet, a single paragraph (i.e., journal article abstract), a news article, or a book.","metadata":{}},{"cell_type":"code","source":"!wget https://www.gutenberg.org/files/1342/1342-0.txt","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:14:13.525241Z","iopub.execute_input":"2023-02-01T18:14:13.525965Z","iopub.status.idle":"2023-02-01T18:14:19.047492Z","shell.execute_reply.started":"2023-02-01T18:14:13.525929Z","shell.execute_reply":"2023-02-01T18:14:19.046103Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport spacy\n\nnlp = spacy.load('en_core_web_sm')\n\ndef read_file(file_name):\n    with open(file_name, 'r') as file:\n        return file.read()\n    \ntext = read_file('1342-0.txt')\nprocessed_text = nlp(text)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:14:51.255773Z","iopub.execute_input":"2023-02-01T18:14:51.256528Z","iopub.status.idle":"2023-02-01T18:15:21.050331Z","shell.execute_reply.started":"2023-02-01T18:14:51.256476Z","shell.execute_reply":"2023-02-01T18:15:21.049034Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Corpus\nA corpus is a collection of document objects. Corpora serve two roles in Gensim:\n1. Input for training a model.\n2. Documents to orgnize.","metadata":{}},{"cell_type":"code","source":"# An example of corpus, consists of 7045 sentences\nsentences = [s for s in processed_text.sents]\n\nprint(len(sentences))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:15:29.630973Z","iopub.execute_input":"2023-02-01T18:15:29.631391Z","iopub.status.idle":"2023-02-01T18:15:29.643947Z","shell.execute_reply.started":"2023-02-01T18:15:29.631360Z","shell.execute_reply":"2023-02-01T18:15:29.643145Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(sentences[30:34])","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:15:31.047225Z","iopub.execute_input":"2023-02-01T18:15:31.047618Z","iopub.status.idle":"2023-02-01T18:15:31.054459Z","shell.execute_reply.started":"2023-02-01T18:15:31.047585Z","shell.execute_reply":"2023-02-01T18:15:31.053038Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(processed_text.text.split())","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:15:33.140584Z","iopub.execute_input":"2023-02-01T18:15:33.141026Z","iopub.status.idle":"2023-02-01T18:15:33.263114Z","shell.execute_reply.started":"2023-02-01T18:15:33.140972Z","shell.execute_reply":"2023-02-01T18:15:33.261756Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"The above example loads the entire corpus into memory. In practice, corpora may be very large, so loading them into memory may be impossible. Gensim intelligently handles such corpus by streaming one document at a time.","metadata":{}},{"cell_type":"markdown","source":"## Word2Vec\n\n\nUsing large amounts of unannotated plain text, word2vec learns relationships between words automatically. The output are vectors, one vector per word, with remarkable linear relationships.\n\nWord2Vec is very useful in automatic text tagging, recommender systems and machine translation.\n\n`Word2Vec`: is a more recent model that embeds words in a lower-dimentional vector space using a shallow neural network. The result is a set of word-vectors where vectors close together in vector space have similar meanings based on context, and word-vectors distant to each other have differing meanings. For example, `strong` and `powerful` would be close together and `strong` and `Paris` would be relatively far.","metadata":{}},{"cell_type":"code","source":"import gensim\nfrom gensim.models import Word2Vec\n\nprint(f\"Gensim Version: {gensim.__version__}\")\n\n# We need data for training the model\nprocessed_sentences = [sent.lemma_.split() for sent in processed_text.sents]\nprocessed_sentences[0]","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:15:35.345969Z","iopub.execute_input":"2023-02-01T18:15:35.346479Z","iopub.status.idle":"2023-02-01T18:15:35.715714Z","shell.execute_reply.started":"2023-02-01T18:15:35.346438Z","shell.execute_reply":"2023-02-01T18:15:35.714627Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Word2Vec accepts several parameters that affect both training speed and quality\ninterchangeable_words_model = Word2Vec(\n    sentences=processed_sentences,\n    min_count=10, # Purning the internal dictionary\n#     size=200, # the number of dimensions (N) gensim maps the word onto\n    window=2, # \n    compute_loss=True,\n    sg=1\n)\n\n# print(len(interchangeable_words_model.wv.vocab))\n\n# getting the training loss\ntraining_loss = interchangeable_words_model.get_latest_training_loss()\nprint(f\"Training Loss: {training_loss}\")\n\nfor w, sim in interchangeable_words_model.wv.most_similar('Darcy'):\n    print((w, sim))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:16:32.187673Z","iopub.execute_input":"2023-02-01T18:16:32.188569Z","iopub.status.idle":"2023-02-01T18:16:32.948024Z","shell.execute_reply.started":"2023-02-01T18:16:32.188518Z","shell.execute_reply":"2023-02-01T18:16:32.945829Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Evaluating\n\n`Word2Vec` training is an unsupervised task, there's no good way to objectively evaluate the result.","metadata":{}},{"cell_type":"markdown","source":"## FastText","metadata":{}},{"cell_type":"code","source":"# from gensim.models import FastText\n\n# model = FastText(window=2)\n# model.build_vocab(sentences=processed_sentences)\n# model.train(sentences=processed_sentences, total_examples=len(processed_sentences), epochs=10)\n\n# for w, sim in model.wv.most_similar('Darcy'):\n#     print((w, sim))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:16:40.778295Z","iopub.execute_input":"2023-02-01T18:16:40.779553Z","iopub.status.idle":"2023-02-01T18:16:40.820768Z","shell.execute_reply.started":"2023-02-01T18:16:40.779497Z","shell.execute_reply":"2023-02-01T18:16:40.818756Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# for w, sim in model.wv.most_similar('Darcy', topn=20):\n#     print((w, sim))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:49.515488Z","iopub.status.idle":"2023-02-01T18:11:49.515934Z","shell.execute_reply.started":"2023-02-01T18:11:49.515729Z","shell.execute_reply":"2023-02-01T18:11:49.515750Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model = FastText(window=50)\n# model.build_vocab(sentences=processed_sentences)\n# model.train(sentences=processed_sentences, total_examples=len(processed_sentences), epochs=10)\n\n# for w, sim in model.wv.most_similar('Darcy'):\n#     print((w, sim))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:49.517121Z","iopub.status.idle":"2023-02-01T18:11:49.517514Z","shell.execute_reply.started":"2023-02-01T18:11:49.517323Z","shell.execute_reply":"2023-02-01T18:11:49.517343Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# print(\"night\" in model.wv.vocab)\n# print(\"nights\" in model.wv.vocab)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:49.518516Z","iopub.status.idle":"2023-02-01T18:11:49.518914Z","shell.execute_reply.started":"2023-02-01T18:11:49.518721Z","shell.execute_reply":"2023-02-01T18:11:49.518741Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# print(model.wv.similarity(\"nights\", \"night\"))\n# print(model.wv.similarity(\"tonight\", \"night\"))","metadata":{"execution":{"iopub.status.busy":"2023-02-01T18:11:49.520105Z","iopub.status.idle":"2023-02-01T18:11:49.520496Z","shell.execute_reply.started":"2023-02-01T18:11:49.520305Z","shell.execute_reply":"2023-02-01T18:11:49.520325Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}