Skip to content

Instantly share code, notes, and snippets.

@vi3k6i5
Last active September 27, 2017 18:07
Show Gist options
  • Save vi3k6i5/ea9b0bf2448fe8d1763df7b9dc5e6431 to your computer and use it in GitHub Desktop.
Save vi3k6i5/ea9b0bf2448fe8d1763df7b9dc5e6431 to your computer and use it in GitHub Desktop.
Time FlashText and Regex for increasing number of keywords
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# pip install flashtext"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from flashtext.keyword import KeywordProcessor\n",
"import random\n",
"import string\n",
"import re\n",
"import time"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def get_word_of_length(str_length):\n",
" \"\"\"\n",
" generate a radom word of given length\n",
" \"\"\"\n",
" return ''.join(random.choice(string.ascii_lowercase) for _ in range(str_length))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'hfzjq'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_word_of_length(5)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1000\n",
"2000\n",
"3000\n",
"4000\n",
"5000\n",
"6000\n",
"7000\n",
"8000\n",
"9000\n",
"10000\n",
"11000\n",
"12000\n",
"13000\n",
"14000\n",
"15000\n",
"16000\n",
"17000\n",
"18000\n",
"19000\n",
"20000\n",
"21000\n",
"22000\n",
"23000\n",
"24000\n",
"25000\n",
"26000\n",
"27000\n",
"28000\n",
"29000\n",
"30000\n",
"31000\n",
"32000\n",
"33000\n",
"34000\n",
"35000\n",
"36000\n",
"37000\n",
"38000\n",
"39000\n",
"40000\n",
"41000\n",
"42000\n",
"43000\n",
"44000\n",
"45000\n",
"46000\n",
"47000\n",
"48000\n",
"49000\n"
]
}
],
"source": [
"string_length_to_time_map = []\n",
"for keywords_length in range(0, 50000, 1000):\n",
" print(keywords_length, flush=True)\n",
" # randomly generate words with different lengths from list [3,4,5,6,7,8]\n",
" # no of words generated = keywords_length\n",
" all_words = [get_word_of_length(random.choice([3,4,5,6,7,8])) for i in range(keywords_length)]\n",
" story = ' '.join(all_words)\n",
" \n",
" # get unique keywords from the list of words generated.\n",
" unique_keywords_sublist = list(set(random.sample(all_words, keywords_length)))\n",
" \n",
" # compile regex\n",
" compiled_re = re.compile('|'.join([r'\\b' + keyword + r'\\b' for keyword in unique_keywords_sublist]))\n",
"\n",
" # add keywords to flashtext\n",
" keyword_processor = KeywordProcessor()\n",
" keyword_processor.add_keywords_from_list(unique_keywords_sublist)\n",
" \n",
" # time the modules now\n",
" start = time.time()\n",
" _ = keyword_processor.extract_keywords(story)\n",
" mid = time.time()\n",
" _ = compiled_re.findall(story)\n",
" end = time.time()\n",
" \n",
" # add results to dictionary\n",
" string_length_to_time_map.append((len(unique_keywords_sublist), mid - start, end - mid))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# string length list\n",
"counts = [v[0] for v in string_length_to_time_map]\n",
"# time taken for flashtext\n",
"time_flash_text = [v[1] for v in string_length_to_time_map]\n",
"# time taken by regex\n",
"time_regex = [v[2] for v in string_length_to_time_map]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10dc1ca58>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1077f2e48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# time taken by only flashtext\n",
"plt.plot(counts, time_flash_text)\n",
"#plt.plot(counts, time_regex)\n",
"plt.legend(['FlashText'], loc='upper left')\n",
"plt.title('No of keywords vs time (sec)')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10a180ba8>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n37499erVi1R4xphIO3QAJg+C3IMwcCJUqlrqh7QSfwQtWLCATp060a5dO84//3xWr14NwIoVK+jY\nsSOpqam0bduWNWvWAJCXl8dtt91Gq1atuOKKK8jKyjrW7lmzZg1XXnklHTp0oHPnzvzwww8AXHXV\nVUyY4HotHjFiBEOGDGHy5MksWbKE66+/ntTUVA4dCjnglDHGT6ow/S7Y8h1cOxrqnFEmh43KEv+j\nM1awcvPeiO6zZYPqPNKrqDGnnaysLFJT3VChzZo1Y9q0aUcsP/PMM/n888+pUKECc+bM4cEHH2Tq\n1KmMHDmSe+65h0GDBnHo0CHy8vLYtm0ba9asYeLEibz88sv079+fqVOncuONNxZ5/GHDhjF69GhO\nO+00vvzyS+68805mz57Nyy+/TOfOnWncuDHPPfcc8+fPJyUlheeff54XXnihIGZjTDnz5bOwfApc\n+jCc0a3MDhuVid8voap6gu3Zs4chQ4awZs0aRIScnBwAOnXqxN///nfS09Pp27cvLVq0ANyXR35S\n7tChwzGrjXbv3s28efO49tprC+bl5uYC0KBBAx5++GG6du3KjBkzSElJCfdUjTGl7YfZMOcv0Kov\nXHhvmR46KhP/8Urmfvm///s/unbtyrRp09iwYQNdunQB4IYbbuDcc8/l3XffpUePHrz00ks0b96c\nSpUqFWybmJh4zKoeVaV27dpFfvEsW7aMWrVqsXnz5oiekzGmFOxYA1OHQr020GdEqbfiKczq+CNo\nz549NGzouiIaN25cwfz169fTvHlz7r77bvr06cN33313wvuuUaMG9evXL6heCgQCLF26FICvv/6a\nuXPnsnjxYv75z3/y008/AVCtWjX27dsX5lkZYyIqazdMHACJFWHABKh4UpmHYIk/gu677z4eeOAB\n2rVrV1ANA/DGG2/QunVrUlNTWb58OYMHDy7R/idNmsTIkSM5++yzadWqFTNnziQrK4thw4YxduxY\nGjZsyJNPPsmtt96KqnLLLbfwy1/+0m7uGlNe5N/M/XkD9B8PKY2Pu0lpKJdj7qalpWnhgVi+//57\nzjrrLJ8iij12PY3xweJXYfqdcPlf4YJ7IrprEVmkqmnFWddK/MYYUxZ2roP3/gRNL4JOd/kaiiV+\nY4wpbXk58NYwSKwA14yEBH9Tb1S26jHGmKjy6ZOwaSH0+y+c3MjvaKzEb4wxpeqnefD503D2QGjd\n1+9oAEv8xhhTerL3wlu3wcmNofuTfkdTwKp6jDGmtLx3H+xJh1veg+TqfkdTwEr8JyC/W+bWrVvT\nq1cvdu/e7XdIxpjyavlbsHQidP4jNDnP72iOUJyhF8eKyHYRWR40b3LQaFwbRCRkPwLesmXeegtD\nrRNN8vvqWb58OTVr1izoQtkYY46wJx1m/hYapkHn+/yO5ijFKfGPA47oNk5Vr1fVVFVNxQ3C/lao\nDT1dvXWL9cOCaNGpUyc2bTo8bvxTTz3FOeecQ9u2bXnkkUcK5j/22GOcccYZXHjhhQwcOJCnn34a\ngHXr1tGtWzc6dOjARRddxKpVqwDo06cP48ePB+Cll15i0KBBZXhWxpiwBfJc081AHvQd5ZpwljPF\nGXrxMxFpGmqZNxB7f+CSyIZ1HO/dD1uXRXaf9dpA98eLtWpeXh4fffQRQ4cOBWD27NmsWbOGBQsW\noKr07t2bzz77jMqVKzN16lSWLl1KTk4O7du3p0OHDoDrYnnkyJG0aNGC+fPn85vf/Ia5c+cyatQo\nLrjgApo1a8bw4cOZN29eZM/TGFO6vvg3/O9LuPo/UOs0v6MJKdyvoouAbaq6pojlCswRkTzgJVUd\nVdSORGQYMAygSZMmYYZVOvL749+0aRNnnXUWl19+OeAS/+zZs2nXrh0AmZmZrFmzhn379tGnTx+S\nk5NJTk6mV69eBcu/+uorrrvuuoJ9Hzx4EIC6devy17/+taCXz5o1a5bxWRpjSix9IXz8D9fV8tkD\n/Y6mSOEm/oHAxGMsv1BVN4nIKcCHIrJKVT8LtaL3pTAKXF89xzxqMUvmkZZfx3/gwAGuvPJKRowY\nwd13342q8sADD/CrX/3qiPWfeeaZkPsJBAKkpKRYF8vGxJKD+1xXy9UbQM9/l3lXyyeixK16RKQC\n0BeYXNQ6qrrJe94OTAM6lvR45clJJ53Ec889x/Dhw8nNzeXKK69k7NixZGZmArBp0ya2b9/OBRdc\nwIwZM8jOziYzM5OZM2cCUL16dZo1a8abb74JuL7287tYXrBgAe+99x7ffvstTz/9ND/++KM/J2mM\nOTGz7oPdP0Hfl6Fy+R4MKZzmnJcBq1Q1PdRCEakiItXyp4ErgOWh1o1G7dq1o23btkycOJErrriC\nG264gU6dOtGmTRv69evHvn37OOecc+jduzdt27ale/futGnThpNPPhmA119/nTFjxhR0sfzOO+9w\n8OBBbrvtNsaOHUuDBg0YPnx4QRfLxphybNkUWDoBLvoDnNrJ72iO67jdMovIRKALUBvYBjyiqmNE\nZBwwT1VHBq3bABitqj1EpDmulA+uSmmCqv69OEHFUrfMmZmZVK1alQMHDtC5c2dGjRpF+/bt/Q4r\naq+nMeXO7p/gPxe6gdJvec+3Vjwn0i1zcVr1hLxDoao3h5i3GejhTa8Hzi5OELFs2LBhrFy5kuzs\nbIYMGVIukr4xJkJyD8KUoaABuPblctl0M5ToiDKKTZgwwe8QjDGlQRVm3APpC+C6cVCjqd8RFVtU\nddlgdd2RYdfRmAj48lnXJUOXB6HVNX5Hc0KiJvEnJyezc+dOS1phUlV27txJcnKy36EYE71WvQtz\n/gKtr4WLy1+XDMcTNVU9jRo1Ij09nYyMDL9DiXrJyck0auT/YBDGRKWty2DqbdCgHfQZUa7b6xcl\nahJ/UlISzZo18zsMY0w827cNJgyA5JNh4ERIqux3RCUSNYnfGGN8lZMNkwfBgZ1w6/tQrZ7fEZWY\nJX5jjDkeVZh+F6R/A/3HQ4NUvyMKS9Tc3DXGGN98PhyWvQFd/wwt+/gdTdgs8RtjzLGsnA5zH4M2\n10HnP/gdTURY4jfGmKJsXgLTfuVG0ur9QlS24AnFEr8xxoSybytMHAiVa8KACZAUO799sZu7xhhT\nWE6WS/rZe2DoB1Ctrt8RRZQlfmOMCaYKb98Om791Jf16bfyOKOIs8RtjTLBPn4AV0+CyR+HMHn5H\nUyqsjt8YY/KtmAaf/BPOvgEuuMfvaEqNJX5jjAHYsRbeuRMadYRez8RMC55QLPEbY0xONrx5MyQm\nwXX/hQqV/I6oVB038YvIWBHZLiLLg+b9RUQ2icgS7xGyIkxEuonIahFZKyL3RzJwY4yJmA8ehG3L\n4JqX4OTY77m2OCX+cUC3EPP/raqp3mNW4YUikgiMALoDLYGBItIynGCNMSbilr8FC8fA+XfB6Vf6\nHU2ZOG7iV9XPgF0l2HdHYK2qrlfVQ8AkIPo7uTDGxI6d62D63dDoHLj0Eb+jKTPh1PHfJSLfeVVB\nNUIsbwhsDHqd7s0LSUSGichCEVlog60YY0pd7kGYcgskJEK/sa5+P06UNPH/B2gOpAJbgOHhBqKq\no1Q1TVXT6tSpE+7ujDHm2Gb/GbYshatfhJQmfkdTpkqU+FV1m6rmqWoAeBlXrVPYJqBx0OtG3jxj\njPHXF8/AglFw3m/gzKv8jqbMlSjxi0j9oJfXAMtDrPYN0EJEmolIRWAAML0kxzPGmIj5fDjMecQN\nlH75Y35H44vjdtkgIhOBLkBtEUkHHgG6iEgqoMAG4Ffeug2A0araQ1VzReRO4AMgERirqitK5SyM\nMaY4Pn0KPv6b61v/6pGQGJ+91oiq+h3DUdLS0nThwoV+h2GMiSWfPO66Y2g7wNXrJyT6HVFEicgi\nVU0rzrrx+XVnjIkfqi7hf/oEpA6C3s/HXNI/UZb4jTGx7eO/w2dPQbuboNdzkGA91dgVMMbErm9f\nd0m//RBL+kHsKhhjYtPmJTDzd9CsM1z1L0v6QexKGGNiz4FdMPkmqFIH+v03blvvFMWuhjEmtgTy\nYOpQyNwKt74PVWr7HVG5Y4nfGBNbPv4HrJsLvZ6Fhh38jqZcsqoeY0zsWPUufP60a8HT4Wa/oym3\nLPEbY2LDjrUw7dfQoB30eNrvaMo1S/zGmOiX9TNMHgQJFaD/eEhK9juics3q+I0x0S1rN7x6Dexa\nD4OmxF0XyyVhJX5jTPTK3gOv9YWty6H/q9D8Yr8jigpW4jfGRKeD++C1fm4wlf7j4YxQQ4ObUKzE\nb4yJPgcz4fXrYNMi9wOtOBxMJRyW+I0x0eXQfpjQHzYugH5joGVvvyOKOlbVY4yJHjlZMHEA/PQ1\n9H0ZWl3jd0RR6bglfhEZKyLbRWR50LynRGSViHwnItNEJKWIbTeIyDIRWSIiNrKKMabkAnkw9Zfw\n4+du9Kw2/fyOKGoVp6pnHFD4rsmHQGtVbQv8ADxwjO27qmpqcUeGMcaYo6jCe/fBqpnQ/Qk4+3q/\nI4pqx038qvoZsKvQvNmqmuu9nAc0KoXYjDHG+eLf8M1oOP9uOPdXfkcT9SJxc/dW4L0ilikwR0QW\niciwY+1ERIaJyEIRWZiRkRGBsIwxMWHpJPjoUWjdDy571O9oYkJYiV9EHgJygdeLWOVCVU0FugN3\niEjnovalqqNUNU1V0+rUqRNOWMaYWLFuLrxzhxtM5eoXbTCVCCnxVRSRm4GewCBV1VDrqOom73k7\nMA3oWNLjGWPizJalbjCVOmfC9a9BhUp+RxQzSpT4RaQbcB/QW1UPFLFOFRGplj8NXAEsD7WuMcYc\n4ef/uR9oJafAoDch+WS/I4opxWnOORH4GjhDRNJFZCjwAlAN+NBrqjnSW7eBiMzyNq0LfCEiS4EF\nwLuq+n6pnIUxJnZkZsCrV0PuQbhxClRv4HdEMee4P+BS1YEhZo8pYt3NQA9vej1wdljRGWPiS/Ze\n1+na3i0w+B045Sy/I4pJ9stdY0z5kJMNk26A7Sth4CRocq7fEcUsS/zGGP/l5boB0jd87rpiaHG5\n3xHFNGsbZYzxlyq8+zv3q9xuT0Db/n5HFPMs8Rtj/KPqfpy1eDx0/iOc92u/I4oLVtVjjPHH1uXw\n3p/gf19Ah1ug60N+RxQ3LPEbY8rW/p3w8d9h0X9dO/2r/uUSv4jfkcUNS/zGmLKRlwsLx8DH/3DD\nJnYcBl3uh8o1/I4s7ljiN8aUvs3fwrTbIeN7aN4Fuj1ubfR9ZInfGFO6svfApEHuRu71r7vxca1a\nx1eW+I0xpev9B2HfFhg6Bxp18DsagzXnNMaUptXvw5LX4MLfWdIvRyzxG2NKx4FdMONuqNsaLv6T\n39GYIFbVY4wpHbP+CAd2wqAp1pd+OWMlfmNM5K14G5ZPcSX9+m39jsYUYonfGBNZmRnw7r3QoJ2r\n2zfljiV+Y0zkqMLM38LBTLh6JCQm+R2RCcESvzEmchaNc71sXvIQnHKm39GYIhRn6MWxIrJdRJYH\nzaspIh+KyBrvOeRvrkWkm4isFpG1InJ/JAM3xpQzC152pf3TLoVOd/odjTmG4pT4xwHdCs27H/hI\nVVsAH3mvjyAiicAIoDvQEhgoIi3DitYYUz598QzM+gOc0QMGTICERL8jMsdw3MSvqp8BuwrN7gO8\n4k2/AlwdYtOOwFpVXa+qh4BJ3nbGmFihCh89BnMegdbXQv/xkJTsd1TmOEpax19XVbd401uBuiHW\naQhsDHqd7s0LSUSGichCEVmYkZFRwrCMMWUmEID374fPn4b2g92QiXYzNyqEfXNXVRXQCOxnlKqm\nqWpanTp1wt2dMaY0BfJgxl0wfyScdwf0es6qd6JISX+5u01E6qvqFhGpD2wPsc4moHHQ60bePGNM\nNDt0AN66zbXeufhP0OUB620zypS0xD8dGOJNDwHeCbHON0ALEWkmIhWBAd52xphotX8HvNILVr3r\n+tTv+qAl/ShUnOacE4GvgTNEJF1EhgKPA5eLyBrgMu81ItJARGYBqGoucCfwAfA98Iaqriid0zDG\nlLqd62D0ZbBtOVz/Kpx3u98RmRI6blWPqg4sYtGlIdbdDPQIej0LmFXi6Iwx5cNP82HiAFe6HzIT\nGp/jd0QmDPbLXWPMsa18B8b3hsopMPRDS/oxwBK/MaZo80bCG0OgXls3glat0/yOyESA9cdvjDma\nKnzyOHz6OJzZE64dDUmV/Y7KRIglfmPMkVThgwdh3ouQeiP0ehYSLVXEEns3jTGHBfLccInfvgbn\n3g5X/gMSrEY41ljiN8Y4uYfcD7NWvm0/zIpxlviNMe7XuG8MhrUfwhV/h/OtW+VYZonfmHi3fwdM\nHAjp37g+dzoMOf42JqpZ4jcmnmWshtevg8xt0P8VaGk9p8cDS/zGxKv1n8DkwVChEtw8Cxp18Dsi\nU0bsdr0x8WjRK/DatXByQ7jtI0v6ccZK/MbEk0AAPnoUvnzGjY173ThIru53VKaMWeI3Jl4c3Adv\n3w7fz4C0odD9SfthVpyyd92YeJCxGibfCDvXwpX/dF0qWxv9uGWJ35hYt2IavHOn62tn8DvQrLPf\nERmfWeI3Jlbl5cKcR+DrF6DROXDdK+5mrol7JW7VIyJniMiSoMdeEfltoXW6iMieoHUeDj9kY8xx\nZW6H8X1c0j/nNtdc05K+8ZS4xK+qq4FUABFJxA2kPi3Eqp+ras+SHscYc4I2LYZJN0DWbrjmJTh7\ngN8RmXImUlU9lwLrVPV/EdqfMaYkVrwN034NVerALz+Eem38jsiUQ5H6AdcAYGIRy84Xke9E5D0R\naVXUDkRkmIgsFJGFGRkZEQrLmDihCp89BW8Occn+trmW9E2RRFXD24FIRWAz0EpVtxVaVh0IqGqm\niPQAnlXVFsfbZ1pami5cuDCsuIyJGznZMP0uWPYGtOkPvZ+HpGS/ozJlTEQWqWpacdaNRIm/O7C4\ncNIHUNW9qprpTc8CkkSkdgSOaYwByMxwA6EvewMu+TP0HWVJ3xxXJOr4B1JENY+I1AO2qaqKSEfc\nF83OCBzTGLN1uetOeX+Ga6rZ6mq/IzJRIqzELyJVgMuBXwXN+zWAqo4E+gG3i0gukAUM0HDrloyJ\nd6rw7asw649QuQbcMgsatvc7KhNFwkr8qrofqFVo3sig6ReAF8I5hjEmyMFMmPk7V7XTvAv0fRmq\nnuJ3VCbK2C93jYkWW5e7Vju71kPXh+Ci30NCot9RmShkid+Y8k4VFo2D9++H5BQYPB2aXeR3VCaK\nWeI3pjw7uA9m/BaWT4HmXb2qnTp+R2WinCV+Y8qrbSvhjcGwa51rqnnh7yHBBs0z4bPEb0x5tGQC\nzLwXKlWzrpRNxFniN6Y8yclyzTS/fRWaXgTXjoFqdf2OysQYS/zGlBc71rpWO9uWQ+c/QpcHrNWO\nKRWW+I1i0GyjAAARqklEQVTxW14uzBsBH//TjZI1aCq0uMzvqEwMs8RvTGnI2u1K71XrQdqt0Lhj\n6DFuNy2GGXfD1mVwxlVw1dNQvUHZx2viiiV+YyItLxem3AobvoAKleG7SVC3DaTdAm37uxu2BzPh\n43/A/P9AlVOg/6twVi8bAN2UCUv8xkTa7D/Duo+g13PQui8smwILx8C798KHj7jO1NZ/Cnt+cv8N\nXPoIVE7xO2oTRyzxGxNJi8a5Uvy5t0OHIW5e2i3Q4WZIX+i+AL57A2o0hVveh1M7+RisiVeW+I2J\nlA1fwLu/h9MuhSv+duQyEWh8jnv0ehYSkuzHWMY3lviNiYSfN8Dkm6BGM+g3FhKP8adVoVKZhWVM\nKFbkMCZc2XthwgDQANww2errTblnJX5jwhHIg7dugx0/wI1TodZpfkdkzHFZid+Ykso9CFOHwg/v\nQ/cn4LSufkdkTLGEO/TiBmAfkAfkFh7hXUQEeBboARwAblbVxeEc05hyIXsvTB4EP34Gl/8VOt7m\nd0TGFFskqnq6quqOIpZ1B1p4j3OB/3jPxkSvfdvg9Wth+/dwzUtw9gC/IzLmhJR2HX8fYLw3wPo8\nEUkRkfqquqWUj2tM6di5Dl69BvbvgIGTrU8dE5XCreNXYI6ILBKRYSGWNwQ2Br1O9+YdRUSGichC\nEVmYkZERZljGlIJNi2DM5XAoE4bMsKRvola4if9CVU3FVencISIlHi1CVUepapqqptWpY0PLmXLm\n+5kwrhdUrAK3zoZGHfyOyJgSCyvxq+om73k7MA3oWGiVTUDjoNeNvHnGRIe8HNf3zuRBUOd0GPoh\n1P6F31EZE5YSJ34RqSIi1fKngSuA5YVWmw4MFuc8YI/V75uosXcLvNIbvnoezvkl3PoBVKvnd1TG\nhC2cm7t1gWmuxSYVgAmq+r6I/BpAVUcCs3BNOdfimnPeEl64xpSRHz+DKUNdfX7f0dD2Or8jMiZi\nSpz4VXU9cHaI+SODphW4o6THMKbMBQLw5b9h7t+g1i/cTdxTzvQ7KmMiyrpsMCbfnnSYfhesmwut\nr3X96Veq6ndUxkScJX5jVGHxePjgIdfR2lXDIW2ojYZlYpYlfhPfdm90pfz1H0PTi6D381Czmd9R\nGVOqLPGb+KTqRsua/X+HS/kdbrXBUUxcsMRv4ksgD1a/B18+C+kLXCm/zwtuKERj4oQlfhMfDh2A\npRPg6xdh1zpIaeKGQGw32Er5Ju5Y4jexLTMDvnkZFrwMWbugQXvo9184q/exh0c0JobZJ9/Eprwc\n94vbT5+A3Gw4owecfxc06WStdUzcs8RvYs/mJTD9Tti6zJXsL30YarfwOypjyg1L/CZ25GTBJ4+7\nkn6V2tD/VWjZ2++ojCl3LPGb2LDhS9cef9c6aHcTXPEYVK7hd1TGlEuW+E1027ocPv4HrH7XNckc\n/A407+JzUMaUb5b4TXTavgo++SesfBsqnQxdH4JOd7iBUowxx2SJ30SXHWvh08dh2RSX5Dv/0SV8\nq9Yxptgs8ZvyLycLfnjfJfvVs6BCMlxwD5x/N1Sp5Xd0xkQdS/ymfMrLgXUfw/IpsOpdNyBK1brQ\n6U7XHr/qKX5HaEzUKnHiF5HGwHjcSFwKjFLVZwut0wV4B/jRm/WWqv61pMc0MS4n2418tWqGG9w8\naxcknwytroE2/Vy/OgmJfkdpTNQLp8SfC/xeVRd7Y+8uEpEPVXVlofU+V9WeYRzHxLKs3bDmQ1g1\nE9bOcSX7itXg9Ctdsj/tEqhQye8ojYkp4Qy9uAXY4k3vE5HvgYZA4cRvzNF2roP37oP1n0Ag11Xj\ntLkOzuwJzS6yZG9MKYpIHb+INAXaAfNDLD5fRL4DNgF/UNUVRexjGDAMoEmTJpEIy5RXa+fAlFtB\nElyLnDN7QsM06yXTmDISduIXkarAVOC3qrq30OLFQBNVzRSRHsDbQMhOU1R1FDAKIC0tTcONy5RD\nqvD1C/Dhw3BKSxgwAWqc6ndUxsSdsIpYIpKES/qvq+pbhZer6l5VzfSmZwFJIlI7nGOaKJWTDdN+\nDbP/7Er4t35gSd8Yn4TTqkeAMcD3qvqvItapB2xTVRWRjrgvmp0lPaYpxzK3w/pPoXp9qNEMqtU/\nXHWzdzNMGgSbF7tf2F70B6vWMcZH4VT1XADcBCwTkSXevAeBJgCqOhLoB9wuIrlAFjBAVa0aJ9b8\nNB/euAkytx2eVyEZUk51A5dv/hYO7YfrX4ezrIGXMX4Lp1XPF8AxR7RQ1ReAF0p6DBMFFo6FWffB\nyQ1hyEzIOwQ//wi7foSfN7jn6g2gz4tQt6Xf0RpjsF/umpLKPQiz/giLX4HTLoVrR8NJNf2OyhhT\nDJb4zYnbu8VV7aR/AxfeC5f82X5Ra0wUscRvii8QcG3wp98JBzPhuleg1dV+R2WMOUGW+M3x7f4J\nlkyAb1+HPT+5Vjs3vW119sZEKUv8JrScLNcr5revumaa4Ea2uuwR1w4/KdnP6IwxYbDEb46060f4\nZrRL+Nl7IKUJdHkAUge6aWNM1LPEb1zd/fq5MH8UrJntbtSe2RPSboGmne3HVsbEGEv88Wz/Djeq\n1Tcvw861UOUUuPg+6HCza3tvjIlJlvjjSe5B2Dgf1s11jy1L3fxG50Df0dCyt3WHbEwcsMQfy/Jy\nYMt3sHGeu0G74QvI2Q8JFaBRR+j6ZzfgSf22fkdqjClDlvhjyYFd7kdVP81zJftNiyE3yy2r2RxS\nb3AjWjW9EJKr+xurMcY3lvijWV6uS/TrPnI/rNq8BFBXoq/X1tXVNzkXGp9rdfbGmAKW+KNJIA92\nrHFVN2vnwPrP4OAeN5JVo3Ncs8umF0CD9lDxJL+jNcaUU5b4y6tAHuz4wZXityxxz1uXuTp6gOoN\noVUf10Fa84uhcg1/4zXGRA1L/H4L5LnuizNWwfbv3XPGKleyz8126ySdBPXaQLsboUEqNOwAtU8H\nOWav2MYYE5Il/rKUkw3bV8LW71xrmy1LYduKwzdgAao3glPOhGYXQ93WLtHXPt16vzTGRIwl/khT\ndSNR7Vrvuj/Ytd4NTJKx2pXkA7luvUrV3Q3YtFvcwOOnnOUSvLW2McaUsrASv4h0A54FEoHRqvp4\noeXiLe8BHABuVtXF4RzTV7mHYP922LcN9m05/NgbNL37J8g5cHgbSYSUxlDrF9DiCqh/tms3n9LU\nukKIIoGAcjA3QHJSAmJVbBGnquQFlIBCQNV7uPkAesS6bkbh9RQKXgcCh5cFCo32GvzuqXfsguMG\n3HNewfZKXiB/mXcsFPXW18LBFTqAevvMC9o+T5WiRqCtVCGRbq3rleganohwBltPBEYAlwPpwDci\nMl1VVwat1h1o4T3OBf7jPfsnEHBVKzlZLkEfOuA6I8veA9m73XPWbje9f4crvWdug31bIWvX0fuT\nRKhWzw0uXusXcNqlaI2maI3mULMZenJjNKFCwYcy//3WXEXJLfjAaeDID3L+ut5Hy5v2tg360BT+\n/GihPwgotL+gD27w+vl/AAXP3vECgfx5R/5x5QbcBzn/Oc87ngAJIiSIuwUhIggUxOKO52IIKOTk\nBsjJC3AoL8Ch3AA5eUpOXoCAKkmJCSQmCBUSxD0nJpAg3r6O+oMPjjt/2eE/2Lyg57xA/h/7kdcm\n/7pl5wTYfeAQPx/I4ecDh9h9IIfdBw4RUKiYmMDJJyVR46QkUk6qSI2TkqienITI4fei4HrhEkhu\nnpIbCJCbp+QElNy8AACJCUKCSNCz2z4v6LOQFzgcW/D7fcTnIug9DU5koai3UV5QkivqOgQCR37W\ngr/w8icLJ7Mjknfg6P0Gf4YPT4eONR7VrlqpfCd+oCOwVlXXA4jIJKAPEJz4+wDjvQHW54lIiojU\nV9UtYRy3SGsfa0+lQBYJBI54JGoeFcijEgepRE6x9nWASuymGhlagwxSyKADOzSFbZpCBilsC9Rk\nGyns1OrkHUwgkKGFPsAHgVXew5QXiQlCoggJCSC4pCvivqzynytVSChI6mfVq07KSUnUOKkiJ1VK\nZG9Wrvel4L4Yftyxn71ZrvpO5HBhLz9JVkh0X1wVEhLcdGICSQluWeEvo0BAC74sExMgUcSbdl+e\n+clWKJgA8M4lwdvWnUNwDIUlSP6XsxRMJya44BOD5ol3TQSOSNIFKVshIeh6HrHPoC+1gutbcI3y\n4zt8vQqvnxj0foQ+h8PHkaB9J3oxiBz+Yi3qHzTVw9frcGHFPScmyOGYCp2f28Z7J7xzyL/WRxTK\nvDgTg+JxMRX93iSW0X+T4ST+hsDGoNfpHF2aD7VOQ+CoxC8iw4BhAE2alKz735+rNEcCuagkoJJI\nAPeskkieJJKTkExuQjI5CcnkJCaTm1CJnIRkDiZWJbtCNQ4mViO7QnUOJlYlkFgROJwQBPchqwJU\nEWgW9KYHr4Mc/UcavL23CsLhUnHhP5j8D1/BH3DBNTr6j77QpNtPwuFtgxPa4biO/MAWlM7z5wet\ne3i7I88jP4Hmf5greH+wBf8p5JcYvZJowTknHHnuSYkJVKyQQFKie1TypgXIDXglZq+0nOv9+104\nroT82BOOfD/yr8HhZG9VNMZAObq5q6qjgFEAaWlpJfrn75x7p0Q0JuOvigWJ2lo0GRNJ4dxd3AQ0\nDnrdyJt3ousYY4wpQ+Ek/m+AFiLSTEQqAgOA6YXWmQ4MFuc8YE9p1e8bY4wpnhJX9ahqrojcCXyA\n+198rKquEJFfe8tHArNwTTnX4ppz3hJ+yMYYY8IRVh2/qs7CJffgeSODphW4I5xjGGOMiSz7BZEx\nxsQZS/zGGBNnLPEbY0ycscRvjDFxRorqLMhPIpIB/K+Em9cGdkQwnGhj5x/f5w92DeL1/E9V1TrF\nWbFcJv5wiMhCVU3zOw6/2PnH9/mDXYN4P//isKoeY4yJM5b4jTEmzsRi4h/ldwA+s/M38X4N4v38\njyvm6viNMcYcWyyW+I0xxhyDJX5jjIkzMZP4RaSbiKwWkbUicr/f8YRDRMaKyHYRWR40r6aIfCgi\na7znGkHLHvDOe7WIXBk0v4OILPOWPSfeeG8iUklEJnvz54tI07I8v+MRkcYi8rGIrBSRFSJyjzc/\nnq5BsogsEJGl3jV41JsfN9cA3NjeIvKtiMz0XsfV+Zca9QZJjuYHrlvodUBzoCKwFGjpd1xhnE9n\noD2wPGjek8D93vT9wBPedEvvfCsBzbzrkOgtWwCchxuR8D2guzf/N8BIb3oAMNnvcy50/vWB9t50\nNeAH7zzj6RoIUNWbTgLme+cRN9fAi+teYAIwM97+Dkr1uvodQIQ+HJ2AD4JePwA84HdcYZ5T00KJ\nfzVQ35uuD6wOda648RE6eeusCpo/EHgpeB1vugLuV47i9zkf41q8A1wer9cAOAlYjBvTOm6uAW7E\nvo+AS4ISf9ycf2k+YqWqp6hB3WNJXT08etlWoK43XdS5N/SmC88/YhtVzQX2ALVKJ+zweP9+t8OV\neOPqGnjVHEuA7cCHqhpv1+AZ4D4gEDQvns6/1MRK4o8r6oooMd8OV0SqAlOB36rq3uBl8XANVDVP\nVVNxJd+OItK60PKYvQYi0hPYrqqLilonls+/tMVK4o+HQd23iUh9AO95uze/qHPf5E0Xnn/ENiJS\nATgZ2FlqkZeAiCThkv7rqvqWNzuurkE+Vd0NfAx0I36uwQVAbxHZAEwCLhGR14if8y9VsZL4izPw\ne7SbDgzxpofg6r3z5w/wWig0A1oAC7x/h/eKyHleK4bBhbbJ31c/YK5XeioXvHjHAN+r6r+CFsXT\nNagjIinedGXcPY5VxMk1UNUHVLWRqjbF/T3PVdUbiZPzL3V+32SI1AM3qPsPuLv5D/kdT5jnMhHY\nAuTg6iSH4uoePwLWAHOAmkHrP+Sd92q8Fgve/DRgubfsBQ7/UjsZeBNYi2vx0Nzvcy50/hfi/oX/\nDljiPXrE2TVoC3zrXYPlwMPe/Li5BkHxd+Hwzd24O//SeFiXDcYYE2diparHGGNMMVniN8aYOGOJ\n3xhj4owlfmOMiTOW+I0xJs5Y4jfGmDhjid8YY+LM/wNudj40q5CRoQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1084ba710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# time taken by flashtext and regex compared\n",
"plt.plot(counts, time_flash_text)\n",
"plt.plot(counts, time_regex)\n",
"plt.legend(['FlashText', 'Regex'], loc='upper left')\n",
"plt.title('No of keywords vs time (sec)')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(318857, 47321, 47321)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# compare 1 last case for verification\n",
"# document length , no of unique terms. no of keywords extracted by flashtext.\n",
"len(story), len(unique_keywords_sublist), len(set(keyword_processor.extract_keywords(story)))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10 loops, best of 3: 152 ms per loop\n"
]
}
],
"source": [
"# time flashtext\n",
"%timeit keyword_processor.extract_keywords(story)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"compiled_re = re.compile('|'.join([r'\\b' + keyword + r'\\b' for keyword in unique_keywords_sublist]))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(318857, 47321, 47321)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# compare 1 last case for verification\n",
"# document length , no of unique terms. no of keywords extracted by regex.\n",
"len(story), len(unique_keywords_sublist), len(set(compiled_re.findall(story)))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 loop, best of 3: 19.4 s per loop\n"
]
}
],
"source": [
"# time regex\n",
"%timeit compiled_re.findall(story)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"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.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment