{ "info": { "author": "Kristopher Kyle", "author_email": "kristopherkyle1@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Corpus-toolkit\nThe corpus-toolkit package grew out of courses in corpus linguistics and learner corpus research. The toolkit attempts to balance simplicity of use, broad application, and scalability. Common corpus analyses such as the calculation of word and n-gram frequency and range, keyness, and collocation are included. In addition, more advanced analyses such as the identification of dependency bigrams (e.g., verb-direct object combinations) and their frequency, range, and strength of association are also included.\n\nMore details on each function in the package (including various option settings) can be found on the [corpus-toolkit resource page](docs/docs1.md).\n## Install corpus-toolkit\nThe package can be downloaded using pip\n```bash\npip install corpus-toolkit\n```\n### Dependencies\nThe corpus-toolkit package makes use of Spacy for tagging and parsing. However, the package also includes a tokenization and lemmatization function that does not require Spacy. If you want to tag or parse your files, you will need to [install Spacy](https://spacy.io/usage) (and an appropriate [Spacy language model](https://spacy.io/usage/models#quickstart)).\n```bash\npip install -U spacy\npython -m spacy download en_core_web_sm\n```\n## Quickstart guide\nThere are three corpus pre-processing options. The first is to use the **tokenize()** function, which does not rely on a part of speech tagger. The second is to use the **tag()** function, which uses [Spacy](https://spacy.io/) to tokenize and tag the corpus. The third option is to pre-process the corpus in any way you like before using the other functions of the corpus-toolkit package.\n\nThis tutorial presumes that you have downloaded and extracted the [brown_single.zip](https://github.com/kristopherkyle/Corpus-Methods-Intro/blob/master/Course-Materials/brown_single.zip?raw=true), which is a version of the [Brown corpus](http://clu.uni.no/icame/manuals/BROWN/INDEX.HTM). The folder \"brown_single\" should be in your working directory.\n\n### Load, tokenize, and generate a frequency list\n\n```python\nfrom corpus_toolkit import corpus_tools as ct\nbrown_corp = ct.ldcorpus(\"brown_single\") #load and read corpus\ntok_corp = ct.tokenize(brown_corp) #tokenize corpus - by default this lemmatizes as well\nbrown_freq = ct.frequency(tok_corp) #creates a frequency dictionary\n#note that range can be calculated instead of frequency using the argument calc = \"range\"\nct.head(brown_freq, hits = 10) #print top 10 items\n\n```\n```\nthe 69836\nbe 37689\nof 36365\na 30475\nand 28826\nto 26126\nin 21318\nhe 19417\nhave 11938\nit 10932\n```\nThe functions **ldcorpus()** and **tokenize()** are [Python generators](https://wiki.python.org/moin/Generators), which means that they must be re-declared each time they are used (iterated over). A slightly messier (but more appropriate) way to achieve the results above is to nest the commands.\n```python\nbrown_freq = ct.frequency(ct.tokenize(ct.ldcorpus(\"brown_single\")))\nct.head(brown_freq, hits = 10)\n```\n```\nthe 69836\nbe 37689\nof 36365\na 30475\nand 28826\nto 26126\nin 21318\nhe 19417\nhave 11938\nit 10932\n```\n\nNote that the **frequency()** function can also calculate range and normalized frequency figures. See the [resource page](docs/docs1.md) for details.\n\n### Generate concordance lines\nConcordance lines can be generated using the **concord()** function. By default, a random sample of 25 hits will be generated, with 10 tokens of left and right context.\n\n```python\nconc_results1 = ct.concord(ct.tokenize(ct.ldcorpus(\"brown_single\"),lemma = False),[\"run\",\"ran\",\"running\",\"runs\"],nhits = 10)\nfor x in conc_results1:\n\tprint(x)\n```\n\n```\n[['buckle', 'drag', 'the', 'wagons', 'to', 'the', 'spring', 'lew', 'durkin', 'yelled'], 'run', ['em', 'right', 'into', 'the', 'spring', 'hustle', 'one', 'of', 'the', 'wagons']]\n[['his', 'sweater', 'soaking', 'into', 'a', 'dark', 'streak', 'of', 'dirt', 'that'], 'ran', ['diagonally', 'across', 'the', 'white', 'wool', 'on', 'his', 'shoulder', 'as', 'though']]\n[['took', 'a', 'hasty', 'shot', 'then', 'fled', 'without', 'knowing', 'the', 'result'], 'ran', ['until', 'breath', 'was', 'a', 'pain', 'in', 'his', 'chest', 'and', 'his']]\n[['back', 'to', 'new', 'york', 'as', 'maude', 'suggested', 'she', 'would', 'nt'], 'run', ['like', 'a', 'scared', 'cat', 'but', 'well', 'she', 'd', 'be', 'very']]\n[['with', 'that', 'soap', 'i', 'was', 'loaded', 'with', 'suds', 'when', 'i'], 'ran', ['away', 'and', 'i', 'have', 'nt', 'had', 'a', 'chance', 'to', 'wash']]\n[['conditions', 'of', 'international', 'law', 'are', 'met', 'countries', 'that', 'try', 'to'], 'run', ['the', 'blockade', 'do', 'so', 'at', 'their', 'own', 'risk', 'blockade', 'runners']]\n[['produce', 'something', 'which', 'has', 'not', 'previously', 'existed', 'thus', 'creativity', 'may'], 'run', ['all', 'the', 'way', 'from', 'making', 'a', 'cake', 'building', 'a', 'chicken']]\n[['from', 'the', 'school', 'he', 'did', 'nt', 'look', 'back', 'and', 'he'], 'ran', ['until', 'he', 'was', 'out', 'of', 'sight', 'of', 'the', 'schoolhouse', 'and']]\n[['in', 'my', 'body', 'i', 'could', 'light', 'all', 'the', 'lights', 'and'], 'run', ['all', 'the', 'factories', 'in', 'the', 'entire', 'united', 'states', 'for', 'some']]\n[['in', 'any', 'time', 'they', 'please', 'sergeant', 'no', 'sir', 'running', 'in'], 'running', ['out', 'ca', 'nt', 'have', 'it', 'makes', 'for', 'confusion', 'and', 'congestion']]\n```\n\nCollocates can also be added as secondary search terms:\n\n```python\nconc_results2 = ct.concord(ct.tokenize(ct.ldcorpus(\"brown_single\"),lemma = False),[\"run\",\"ran\",\"running\",\"runs\"],collocates = [\"quick\",\"quickly\"], nhits = 10)\nfor x in conc_results2:\n\tprint(x)\n```\n\n```\n[['range', 'and', 'in', 'marlin', 's', 'underground', 'test', 'gallery', 'we', 'quickly'], 'ran', ['into', 'the', 'same', 'trouble', 'that', 'plagued', 'bill', 'ruger', 'in', 'his']]\n[['s', 'nest', 'to', 'the', 'rocky', 'ribs', 'of', 'the', 'canyonside', 'russ'], 'ran', ['up', 'the', 'steps', 'quickly', 'to', 'the', 'plank', 'porch', 'the', 'front']]\n[['hands', 'and', 'feet', 'keeping', 'the', 'hands', 'in', 'the', 'starting', 'position'], 'run', ['in', 'place', 'to', 'a', 'quick', 'rhythm', 'after', 'this', 'has', 'become']]\n[['engine', 'up', 'to', 'operating', 'temperature', 'quickly', 'and', 'to', 'keep', 'it'], 'running', ['at', 'its', 'most', 'efficient', 'temperature', 'through', 'the', 'proper', 'circulation', 'of']]\n```\n\nSearch terms (and collocate search terms) can also be interpreted as regular expressions:\n```python\nconc_results3 = ct.concord(ct.tokenize(ct.ldcorpus(\"brown_single\"),lemma = False),[\"run.*\",\"ran\"],collocates = [\"quick.*\"], nhits = 10, regex = True)\nfor x in conc_results3:\n\tprint(x)\n```\n\n```\n[['impact', 'we', 'fired', 'this', 'little', '20-inch-barrel', 'job', 'on', 'my', 'home'], 'range', ['and', 'in', 'marlin', 's', 'underground', 'test', 'gallery', 'we', 'quickly', 'ran']]\n[['range', 'and', 'in', 'marlin', 's', 'underground', 'test', 'gallery', 'we', 'quickly'], 'ran', ['into', 'the', 'same', 'trouble', 'that', 'plagued', 'bill', 'ruger', 'in', 'his']]\n[['minutes', 'the', 'gallery', 'leaders', 'had', 'given', 'the', 'students', 'a', 'quick'], 'rundown', ['on', 'art', 'from', 'the', 'renaissance', 'to', 'the', 'late', '19th', 'century']]\n[['s', 'nest', 'to', 'the', 'rocky', 'ribs', 'of', 'the', 'canyonside', 'russ'], 'ran', ['up', 'the', 'steps', 'quickly', 'to', 'the', 'plank', 'porch', 'the', 'front']]\n[['hands', 'and', 'feet', 'keeping', 'the', 'hands', 'in', 'the', 'starting', 'position'], 'run', ['in', 'place', 'to', 'a', 'quick', 'rhythm', 'after', 'this', 'has', 'become']]\n[['engine', 'up', 'to', 'operating', 'temperature', 'quickly', 'and', 'to', 'keep', 'it'], 'running', ['at', 'its', 'most', 'efficient', 'temperature', 'through', 'the', 'proper', 'circulation', 'of']]\n```\n\nConcordance lines can also be written to a file for easier analysis (e.g., using spreadsheet software). By default, items are separated by tab characters (\"\\t\").\n\n```python\n#write concordance lines to a file called \"run_25.txt\"\nconc_results4 = ct.concord(ct.tokenize(ct.ldcorpus(\"brown_single\"),lemma = False),[\"run\",\"ran\",\"running\",\"runs\"], outname = \"run_25.txt\")\n```\n\n\n### Create a tagged version of your corpus\n\nThe most efficient way to conduct multiple analyses with a tagged corpus is to write a tagged version of your corpus to file and then conduct subsequent analyses with the tagged files. If this is not possible for some reason, one can always run the tagger each time an analysis is conducted.\n\n```python\ntagged_brown = ct.tag(ct.ldcorpus(\"brown_single\"))\nct.write_corpus(\"tagged_brown_single\",tagged_brown) #the first argument is the folder where the tagged files will be written\n```\nThe function **tag()** is also a Python generator, so the preferred way to write a corpus is:\n```python\nct.write_corpus(\"tagged_brown_single\",ct.tag(ct.ldcorpus(\"brown_single\")))\n```\n\nNow, we can reload our tagged corpus using the **reload()** function and generate a part of speech sensitive frequency list.\n\n```python\ntagged_freq = ct.frequency(ct.reload(\"tagged_brown_single\"))\nct.head(tagged_freq, hits = 10)\n```\n```\nthe_DET 69861\nbe_VERB 37800\nof_ADP 36322\nand_CCONJ 28889\na_DET 23069\nin_ADP 20967\nto_PART 15409\nhave_VERB 11978\nto_ADP 10800\nhe_PRON 9801\n```\n## Collocation\n\nUse the **collocator()** function to find collocates for a particular word.\n\n```Python\ncollocates = ct.collocator(ct.tokenize(ct.ldcorpus(\"brown_single\")),\"go\",stat = \"MI\")\n#stat options include: \"MI\", \"T\", \"freq\", \"left\", and \"right\"\n\nct.head(collocates, hits = 10)\n```\n```\ndownstairs 7.875170389265524\nupstairs 6.915812373762869\nbedroom 6.627242875821938\nabroad 6.273134375185426\nre 6.21620730710059\nm 6.211322724303333\nforever 6.174730671124432\nstanley 6.174730671124432\nlet 5.938347287580174\nwrong 5.868744120106091\n```\n\n## Keyness\nKeyness is calculated using two frequency dictionaries (consisting of raw frequency values). Only effect sizes are reported (_p_ values are arguably not particularly useful for keyness analyses). Keyness calculation options include \"log-ratio\", \"%diff\", and \"odds-ratio\".\n\n```python\n#First, generate frequency lists for each corpus\ncorp1freq = ct.frequency(ct.tokenize(ct.ldcorpus(\"corp1\")))\ncorp2freq = ct.frequency(ct.tokenize(ct.ldcorpus(\"corp2\")))\n\n#then calculate Keyness\ncorp_key = ct.keyness(corp1freq,corp2freq, effect = \"log-ratio\")\nct.head(corp_key, hits = 10) #to display top hits\n```\n## N-grams\n\nN-grams are contiguous sequences of _n_ words. The **tokenize()** function can be used to create an n-gram version of a corpus by employing the **ngram** argument. By default, words in an n-gram are separated by two underscores \"\\_\\_\"\n\n```Python\ntrigramfreq = ct.frequency(ct.tokenize(ct.ldcorpus(\"brown_single\"),lemma = False, ngram = 3))\nct.head(trigramfreq, hits = 10)\n```\n```\none__of__the 404\nthe__united__states 339\nas__well__as 237\nsome__of__the 179\nout__of__the 172\nthe__fact__that 167\ni__do__nt 162\nthe__end__of 149\npart__of__the 144\nit__was__a 143\n```\n\n## Dependency bigrams\nDependency bigrams consist of two words that are syntactically connected via a head-dependent relationship. For example, in the clause \"The player **_kicked_** the **_ball_**\", the main verb **_kicked_** is connected to the noun **_ball_** via a direct object relationship, wherein **_kicked_** is the head and **_ball_** is the dependent.\n\nThe function **dep_bigram()** generates frequency dictionaries for the dependent, the head, and the dependency bigram. In addition, range is calculated along with a complete list of sentences in which the relationship occurs.\n\n```Python\nbg_dict = ct.dep_bigram(ct.ldcorpus(\"brown_single\"),\"dobj\")\nct.head(bg_dict[\"bi_freq\"], hits = 10)\n#other keys include \"dep_freq\", \"head_freq\", and \"range\"\n#also note that the key \"samples\" can be used to obtain a list of sample sentences\n#but, this is not compatible with the ct.head() function (see ct.dep_conc() instead)\n```\n```\n#all dependency bigrams are formatted as dependent_head\nwhat_do 247\nplace_take 84\nwhat_say 80\nhim_told 67\nit_do 63\nthat_do 51\ntime_have 49\nwhat_mean 46\nthis_do 46\nwhat_call 42\n```\n\n### Strength of association\n\nVarious measures of strength of association can calculated between dependents and heads. The **_soa()_** function takes a dictionary generated by the **_dep_bigram()_** function and calculates the strength of association for each dependency bigram.\n\n```Python\nsoa_mi = ct.soa(bg_dict,stat = \"MI\")\n#other stat options include: \"T\", \"faith_dep\", \"faith_head\",\"dp_dep\", and \"dp_head\"\nct.head(soa_mi, hits = 10)\n```\n```\nradiation_ionize 12.037110123486007\nB_paragraph 12.037110123486007\nsuicide_commit 10.648544835568353\nnose_scratch 10.39700606857239\ncalendar_adjust 9.972979786066292\nimagination_capture 9.774075717652213\nnose_blow 9.672113306706759\nEnglish_speak 9.496541742123304\nthroat_clear 9.367258725178337\nexpense_deduct 9.256227412789594\n```\n### Concordance lines for dependency bigrams\nA number of excellent cross-platform GUI- based concordancers such as [AntConc](https://www.laurenceanthony.net/software/antconc/) are freely available, and are likely the preferred method for most concordancing.\n\nHowever, it is difficult to get concordance lines for dependency bigrams without a more advanced program. The **_dep_conc()_** function takes the samples generated by the **_dep_bigram()_** function and creates a random sample of hits (50 hits by default) formatted as an html file.\n\nThe following example will write an html file named \"dobj_results.html\" to your working directory.\n\n```python\nct.dep_conc(bg_dict[\"samples\"],\"dobj_results\")\n```\nWhen opened, the resulting file will include the following:\n\n

A fringe of housing and gardens bearded_dobj_head the top_dobj_dep of the heights , and behind it were sandy roads leading past farms and hayfields . \n 39

A man with insomnia had better avoid_dobj_head bad dreams_dobj_dep of that kind if he knew what was good for him . \n 241

He simply would not work_dobj_head his arithmetic problems_dobj_dep when the teacher held his class . \n 192

You may be sure he marries her in the end and has_dobj_head a fine old knockdown fight_dobj_dep with the brother , and that there are plenty of minor scraps along the way to ensure that you understand what the word Donnybrook means . \n 198

Anyone familiar with the details of the McClellan hearings must at once realize that the sweetheart arrangements augmented_dobj_head employer profits_dobj_dep far more than they augmented the earnings of the corruptible labor leaders . \n 407

If the transferor has_dobj_head substantial assets_dobj_dep other than the claim , it seems reasonable to assume no corporation would be willing to acquire all of its properties in the dim hope of collecting a claim for refund of taxes . \n 433

For the first few months of their marriage she had tried to be nice about Gunny , going out with him to watch_dobj_head this pearl_dobj_dep without price stamp imperiously around in her stall . \n 441

If the site is on a reservoir , the level of the water at various seasons as it affects_dobj_head recreation_dobj_dep should be studied . \n 471

She thrust forward through the shadows and the trees that resisted_dobj_head her_dobj_dep and tried to fling her back . \n 226

The most infamous of all was launched by the explosion of the island of Krakatoa in 1883 ; ; it raced across the Pacific at 300 miles an hour , devastated_dobj_head the coasts_dobj_dep of Java and Sumatra with waves 100 to 130 feet high , and pounded the shore as far away as San Francisco . \n 40

\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://kristopherkyle.github.io/corpus_toolkit/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "corpus-toolkit", "package_url": "https://pypi.org/project/corpus-toolkit/", "platform": "", "project_url": "https://pypi.org/project/corpus-toolkit/", "project_urls": { "Homepage": "https://kristopherkyle.github.io/corpus_toolkit/" }, "release_url": "https://pypi.org/project/corpus-toolkit/0.32/", "requires_dist": null, "requires_python": "", "summary": "A simple Python toolkit for corpus analyses", "version": "0.32", "yanked": false, "yanked_reason": null }, "last_serial": 11996070, "releases": { "0.10": [ { "comment_text": "", "digests": { "md5": "15464274ba2baac3dccf28abce7d990f", "sha256": "998ac2f02dd24083b1f8842a420e3210cf89605f75b219ce65498e4bd58823fd" }, "downloads": -1, "filename": "corpus_toolkit-0.10.tar.gz", "has_sig": false, "md5_digest": "15464274ba2baac3dccf28abce7d990f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1691679, "upload_time": "2019-08-13T00:31:18", "upload_time_iso_8601": "2019-08-13T00:31:18.120727Z", "url": "https://files.pythonhosted.org/packages/d4/6a/4114e1301988b877187ad48117160653c9af48bd8443249d6a9058f16602/corpus_toolkit-0.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.21": [ { "comment_text": "", "digests": { "md5": "b3d18b68080e87ea980169985b1daae3", "sha256": "fc0093e7cf02e4115a630173dac7b0aa6b4bcc3935a34bbc215ba7a062061e33" }, "downloads": -1, "filename": "corpus_toolkit-0.21-py3-none-any.whl", "has_sig": false, "md5_digest": "b3d18b68080e87ea980169985b1daae3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1699968, "upload_time": "2019-10-09T21:36:37", "upload_time_iso_8601": "2019-10-09T21:36:37.356086Z", "url": "https://files.pythonhosted.org/packages/3b/e0/c5392c64b486d6d8a162379369a028a08cd0193e539d5eb52179db48006c/corpus_toolkit-0.21-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "63d4fb8c528dee2c5542b591c5efa0b5", "sha256": "343733f0bf18f31a4087e77f71acb0f574b64191ed2c147406e9ce75ab932f62" }, "downloads": -1, "filename": "corpus_toolkit-0.21.tar.gz", "has_sig": false, "md5_digest": "63d4fb8c528dee2c5542b591c5efa0b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1708651, "upload_time": "2019-10-09T21:36:40", "upload_time_iso_8601": "2019-10-09T21:36:40.558788Z", "url": "https://files.pythonhosted.org/packages/1b/f8/dfa2bd8d6ddc37149497c4cb6b1c6d92d1f4f4585d89e123b4b98cb41281/corpus_toolkit-0.21.tar.gz", "yanked": false, "yanked_reason": null } ], "0.22": [ { "comment_text": "", "digests": { "md5": "2075aae2f16eb0b12ba5584d19b8186c", "sha256": "1d5b76d030f7d28e8ac3c460f4cedd60107fad68323d28c545adc90f63fa6f5b" }, "downloads": -1, "filename": "corpus_toolkit-0.22-py3-none-any.whl", "has_sig": false, "md5_digest": "2075aae2f16eb0b12ba5584d19b8186c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1700013, "upload_time": "2019-10-17T16:31:05", "upload_time_iso_8601": "2019-10-17T16:31:05.426787Z", "url": "https://files.pythonhosted.org/packages/86/c3/d657345776366815a331b76cff5272b5516fcbdbe252218f208762edbcf2/corpus_toolkit-0.22-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b43aecd55855acc9231efe7f654963de", "sha256": "dd77d18ea4a462200c6c9cfab4a4bb14aca50ff7a68e6561e532e473d0024e64" }, "downloads": -1, "filename": "corpus_toolkit-0.22.tar.gz", "has_sig": false, "md5_digest": "b43aecd55855acc9231efe7f654963de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1708660, "upload_time": "2019-10-17T16:31:17", "upload_time_iso_8601": "2019-10-17T16:31:17.463835Z", "url": "https://files.pythonhosted.org/packages/f1/eb/f1242ba814bd7602904baf7134b39b981d4e0222568484a908abedd31769/corpus_toolkit-0.22.tar.gz", "yanked": false, "yanked_reason": null } ], "0.23": [ { "comment_text": "", "digests": { "md5": "b1409877aacb8bcd5f8bcb46d86a23aa", "sha256": "8a9502d2f3fe824c97b82179b8a45d65ae4fae472159fb65c69f8b96c312b05a" }, "downloads": -1, "filename": "corpus_toolkit-0.23-py3-none-any.whl", "has_sig": false, "md5_digest": "b1409877aacb8bcd5f8bcb46d86a23aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1700018, "upload_time": "2019-10-17T16:38:18", "upload_time_iso_8601": "2019-10-17T16:38:18.521453Z", "url": "https://files.pythonhosted.org/packages/1d/92/cea7f2991cdafa5d8ea809c9374f3ecb40a7c721ed5543b3e64e12b4d5e8/corpus_toolkit-0.23-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "489527cd8bec51c56b089b58361347e1", "sha256": "a5a579e48431f7288a4467164bbac147bb6eedafa540cf9b107cce45b5e38553" }, "downloads": -1, "filename": "corpus_toolkit-0.23.tar.gz", "has_sig": false, "md5_digest": "489527cd8bec51c56b089b58361347e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1708668, "upload_time": "2019-10-17T16:38:35", "upload_time_iso_8601": "2019-10-17T16:38:35.626785Z", "url": "https://files.pythonhosted.org/packages/28/fa/8d0f604c3b0b75f241d160829c7c454cc3e3ac9a71653a4d34b263092abf/corpus_toolkit-0.23.tar.gz", "yanked": false, "yanked_reason": null } ], "0.24": [ { "comment_text": "", "digests": { "md5": "a987cb288e8388ec3438eb4598352344", "sha256": "cfab434e92701584e9863aa1d715e535dab117f30e9310ba6a6ed589ddc78219" }, "downloads": -1, "filename": "corpus_toolkit-0.24-py3-none-any.whl", "has_sig": false, "md5_digest": "a987cb288e8388ec3438eb4598352344", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1708081, "upload_time": "2019-10-17T16:43:37", "upload_time_iso_8601": "2019-10-17T16:43:37.591315Z", "url": "https://files.pythonhosted.org/packages/28/76/845cf671cc4c7ed3db9531f85cd9f72796b8590bc5d99454ae4bb9231568/corpus_toolkit-0.24-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0bf5a62213a041a49d83e5904c8f7c41", "sha256": "b3d79c020e5aaf90f7f557d8847fba7bbdaf17272c7ecebef6ea868726808ed0" }, "downloads": -1, "filename": "corpus_toolkit-0.24.tar.gz", "has_sig": false, "md5_digest": "0bf5a62213a041a49d83e5904c8f7c41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1708667, "upload_time": "2019-10-17T16:44:01", "upload_time_iso_8601": "2019-10-17T16:44:01.199858Z", "url": "https://files.pythonhosted.org/packages/3e/de/0b0db1dfb108bf91c7c38e4d7c43e015300f61fa08440276e7012fe511c1/corpus_toolkit-0.24.tar.gz", "yanked": false, "yanked_reason": null } ], "0.25": [ { "comment_text": "", "digests": { "md5": "f6771dbc60928e484f76974f3d20a9b9", "sha256": "349bd86b3690197ee7a9e35002faa90693759d38503f49320a73cef1a238ae2b" }, "downloads": -1, "filename": "corpus_toolkit-0.25-py3-none-any.whl", "has_sig": false, "md5_digest": "f6771dbc60928e484f76974f3d20a9b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1708077, "upload_time": "2019-10-17T16:52:51", "upload_time_iso_8601": "2019-10-17T16:52:51.938798Z", "url": "https://files.pythonhosted.org/packages/16/f2/8962b9e2b3998de9b346a248150df3202492ff4b9440ecb256bb8f3f0af9/corpus_toolkit-0.25-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8b409694d7d520f02a9f50c2bbc7d3eb", "sha256": "3ed02214e8d737da949086c2fd745a66dd3f423cd35a8d1b1cf7953e694d9741" }, "downloads": -1, "filename": "corpus_toolkit-0.25.tar.gz", "has_sig": false, "md5_digest": "8b409694d7d520f02a9f50c2bbc7d3eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1708675, "upload_time": "2019-10-17T16:52:58", "upload_time_iso_8601": "2019-10-17T16:52:58.842780Z", "url": "https://files.pythonhosted.org/packages/4c/56/248ab1f89af1e81d510bdaab7293cc1da0e0e446002c58d1bbc860026206/corpus_toolkit-0.25.tar.gz", "yanked": false, "yanked_reason": null } ], "0.26": [ { "comment_text": "", "digests": { "md5": "e4fe46517b353d012cb129f892ddfad6", "sha256": "11a6a6d594f194cacf89f73c93cfe36df044f70df830d6d128d3f7f5d4e7e02b" }, "downloads": -1, "filename": "corpus_toolkit-0.26-py3-none-any.whl", "has_sig": false, "md5_digest": "e4fe46517b353d012cb129f892ddfad6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1708077, "upload_time": "2019-10-17T17:01:20", "upload_time_iso_8601": "2019-10-17T17:01:20.826778Z", "url": "https://files.pythonhosted.org/packages/c1/af/e673cf62ea5e8da58c0a1198740b292f01c91e66f702bb85f7e9317a9492/corpus_toolkit-0.26-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cf5b3fa0968d3e3badc1767befac6bf5", "sha256": "72ec344650ce8991da72981ab967cb960b20834301d861160da7c9e5507728e9" }, "downloads": -1, "filename": "corpus_toolkit-0.26.tar.gz", "has_sig": false, "md5_digest": "cf5b3fa0968d3e3badc1767befac6bf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1700872, "upload_time": "2019-10-17T17:01:29", "upload_time_iso_8601": "2019-10-17T17:01:29.535059Z", "url": "https://files.pythonhosted.org/packages/7f/ec/0e5d21e2e4e63bdf6d9075da515685989f8f0ef056de2729e743615fb6b5/corpus_toolkit-0.26.tar.gz", "yanked": false, "yanked_reason": null } ], "0.27": [ { "comment_text": "", "digests": { "md5": "e3d2fc715992e6d990f9ff75888cd3d6", "sha256": "05f74e34b23d64010967ffb8f4a2db1a9b700635e772471e95cc4e32943157ef" }, "downloads": -1, "filename": "corpus_toolkit-0.27-py3-none-any.whl", "has_sig": false, "md5_digest": "e3d2fc715992e6d990f9ff75888cd3d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1708059, "upload_time": "2019-10-17T17:47:13", "upload_time_iso_8601": "2019-10-17T17:47:13.614779Z", "url": "https://files.pythonhosted.org/packages/e9/32/47ff8b6223043588616a5168881502cb6b58258ae08496fc29c306c4dac0/corpus_toolkit-0.27-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7bece7b12b56bca0842c6df8d1a2242d", "sha256": "182a5d910f190ced81a824a3c05014466cc2b90aeab386561920ffd3d6fcfe5f" }, "downloads": -1, "filename": "corpus_toolkit-0.27.tar.gz", "has_sig": false, "md5_digest": "7bece7b12b56bca0842c6df8d1a2242d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1700860, "upload_time": "2019-10-17T17:47:36", "upload_time_iso_8601": "2019-10-17T17:47:36.169345Z", "url": "https://files.pythonhosted.org/packages/20/6e/1be48c11ead3b0bb4f82829a1d5b456589cabb7624bb73a1a4c24e03ddd8/corpus_toolkit-0.27.tar.gz", "yanked": false, "yanked_reason": null } ], "0.28": [ { "comment_text": "", "digests": { "md5": "a7d00c63bf04783e3b3b69c7cf90d74b", "sha256": "bf3fc081b595ea50cf9e33780b5e31110a7308f7758058b1b998f0fc3385868f" }, "downloads": -1, "filename": "corpus_toolkit-0.28-py3-none-any.whl", "has_sig": false, "md5_digest": "a7d00c63bf04783e3b3b69c7cf90d74b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1716161, "upload_time": "2019-10-17T20:45:25", "upload_time_iso_8601": "2019-10-17T20:45:25.275630Z", "url": "https://files.pythonhosted.org/packages/5f/50/8e61d905dde93c0160b0f4b667dd7118c2ec6739c9f28f86b21eaf97d696/corpus_toolkit-0.28-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "75d0aa5daa7095c34270c9f47c4e5c1d", "sha256": "79070e05134484fb6558ed68cb8e8f0cc33c4d15f977c963af74675871d4bcc3" }, "downloads": -1, "filename": "corpus_toolkit-0.28.tar.gz", "has_sig": false, "md5_digest": "75d0aa5daa7095c34270c9f47c4e5c1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1708640, "upload_time": "2019-10-17T20:45:45", "upload_time_iso_8601": "2019-10-17T20:45:45.451870Z", "url": "https://files.pythonhosted.org/packages/c5/4a/d3ef62d8d7858dbc49efebafd27e7c302b4a943729e72fa41574c0a60fb1/corpus_toolkit-0.28.tar.gz", "yanked": false, "yanked_reason": null } ], "0.29": [ { "comment_text": "", "digests": { "md5": "d447e95c0e85b9341e89b221bba6c114", "sha256": "19f6b60f2b383ca84c6becfec5a1ac35d9b9f99e2209fa004434e202ea150a20" }, "downloads": -1, "filename": "corpus_toolkit-0.29-py3-none-any.whl", "has_sig": false, "md5_digest": "d447e95c0e85b9341e89b221bba6c114", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1716393, "upload_time": "2019-10-30T22:45:13", "upload_time_iso_8601": "2019-10-30T22:45:13.405162Z", "url": "https://files.pythonhosted.org/packages/91/fa/da418891abd303752a0759c56ec4c661f81fa3d56c7456184f3812670379/corpus_toolkit-0.29-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ba58940669e0bf928967a03b5fab6ba4", "sha256": "b1a698c4264c4ee8d7c24b0970408906ee61f2111e457dfb14edbe44e3ab0f65" }, "downloads": -1, "filename": "corpus_toolkit-0.29.tar.gz", "has_sig": false, "md5_digest": "ba58940669e0bf928967a03b5fab6ba4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1708989, "upload_time": "2019-10-30T22:45:20", "upload_time_iso_8601": "2019-10-30T22:45:20.267605Z", "url": "https://files.pythonhosted.org/packages/25/3a/9f2a78190973b82926e43b3b42f918dd4a19bb27bc5c9d61894e1211d5e8/corpus_toolkit-0.29.tar.gz", "yanked": false, "yanked_reason": null } ], "0.30": [ { "comment_text": "", "digests": { "md5": "43c0b368b6d50b3c609c6a7ba6cc695d", "sha256": "ab5f9b5f309e66b78f714fec4f5923e195e875515faf5655737d3b3fb5ffe742" }, "downloads": -1, "filename": "corpus_toolkit-0.30-py3-none-any.whl", "has_sig": false, "md5_digest": "43c0b368b6d50b3c609c6a7ba6cc695d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1716570, "upload_time": "2021-10-18T20:21:32", "upload_time_iso_8601": "2021-10-18T20:21:32.864761Z", "url": "https://files.pythonhosted.org/packages/9e/87/a5063fd314f698c22af127da61d798f7115581ef01796f5a3b876bd63907/corpus_toolkit-0.30-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b659905fa521d39214cdb419f50c800e", "sha256": "5d32030ac244e868279b7f4a2037af91dff281b0b3fa1ae0c1b54fda1ecda469" }, "downloads": -1, "filename": "corpus_toolkit-0.30.tar.gz", "has_sig": false, "md5_digest": "b659905fa521d39214cdb419f50c800e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1709084, "upload_time": "2021-10-18T20:21:40", "upload_time_iso_8601": "2021-10-18T20:21:40.990024Z", "url": "https://files.pythonhosted.org/packages/8b/4c/65f63e74f18ea3a42805af72e7116b069d6c01a471eeff2551e6d3562444/corpus_toolkit-0.30.tar.gz", "yanked": false, "yanked_reason": null } ], "0.31": [ { "comment_text": "", "digests": { "md5": "9244baf7e2065a33d203e86323fd9cd5", "sha256": "f73ef4f642738612a0be2c069ad0a6714854b445a2f768390b17e7a546daa846" }, "downloads": -1, "filename": "corpus_toolkit-0.31-py3-none-any.whl", "has_sig": false, "md5_digest": "9244baf7e2065a33d203e86323fd9cd5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1719837, "upload_time": "2021-11-11T14:25:05", "upload_time_iso_8601": "2021-11-11T14:25:05.725271Z", "url": "https://files.pythonhosted.org/packages/73/50/b51f2a64a9d22390b5342bf5994046a2efd7e5482096b516a5efde5bac76/corpus_toolkit-0.31-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "74bb457868fc7de06c4c3bcd73a3bed4", "sha256": "0811174b463c8f36cd16051662c457836bdbb5a6e1f9d82a40d1def71bddad28" }, "downloads": -1, "filename": "corpus_toolkit-0.31.tar.gz", "has_sig": false, "md5_digest": "74bb457868fc7de06c4c3bcd73a3bed4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1713840, "upload_time": "2021-11-11T14:25:16", "upload_time_iso_8601": "2021-11-11T14:25:16.566195Z", "url": "https://files.pythonhosted.org/packages/31/dc/7759d93540ae32093418a0056324b5c82df8ada2cd1f2491c543f209e1dc/corpus_toolkit-0.31.tar.gz", "yanked": false, "yanked_reason": null } ], "0.32": [ { "comment_text": "", "digests": { "md5": "6c6dce51e6928087d6181c91ec9c32cc", "sha256": "9da70a6482a4d9dab3fcacf0f8fc48914ba31d87a65f5bb1591b43b86be7396f" }, "downloads": -1, "filename": "corpus_toolkit-0.32-py3-none-any.whl", "has_sig": false, "md5_digest": "6c6dce51e6928087d6181c91ec9c32cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1719889, "upload_time": "2021-11-11T14:59:22", "upload_time_iso_8601": "2021-11-11T14:59:22.483292Z", "url": "https://files.pythonhosted.org/packages/fe/b1/a7f41ea0368bfaa31f045683745a71cc3e4ab0cfbfdf32cf21ce93aa57aa/corpus_toolkit-0.32-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e0898e25e462e777ff7ce63683cfab57", "sha256": "57d5b62b53637b5c43c3ca1b24d5464be8fe113ade762208f33e5b5bfe2da213" }, "downloads": -1, "filename": "corpus_toolkit-0.32.tar.gz", "has_sig": false, "md5_digest": "e0898e25e462e777ff7ce63683cfab57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1713862, "upload_time": "2021-11-11T14:59:32", "upload_time_iso_8601": "2021-11-11T14:59:32.404370Z", "url": "https://files.pythonhosted.org/packages/d6/ab/7e545f6fa4b04adb1da911b37bc190673cad56479a5ab1b7ecd16293f753/corpus_toolkit-0.32.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4": [ { "comment_text": "", "digests": { "md5": "1a2c01a8a5ec29b6fe9dd882acbe82fc", "sha256": "56428479d18dde0c50b6c6bd03e39492359e336fd7301050245b30f932681de6" }, "downloads": -1, "filename": "corpus_toolkit-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1a2c01a8a5ec29b6fe9dd882acbe82fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10549, "upload_time": "2019-08-12T09:45:18", "upload_time_iso_8601": "2019-08-12T09:45:18.956742Z", "url": "https://files.pythonhosted.org/packages/1f/9c/6a5794c22d41960a34ea5d027c69e4be18eb5b6f59dabd2b39a2796bf40c/corpus_toolkit-0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.5": [ { "comment_text": "", "digests": { "md5": "f753ded01d894bb8aa13542d999a1bc3", "sha256": "4d90a8ca9bae7b98759226ab7c32ee2cf78ff21cbea80cf0a649ff765bd6034b" }, "downloads": -1, "filename": "corpus_toolkit-0.5.tar.gz", "has_sig": false, "md5_digest": "f753ded01d894bb8aa13542d999a1bc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9193, "upload_time": "2019-08-12T09:59:17", "upload_time_iso_8601": "2019-08-12T09:59:17.061080Z", "url": "https://files.pythonhosted.org/packages/a2/26/0295a119c149f410da9d98db2ad27f8fa76a638b03bf31baf7fae908fe6e/corpus_toolkit-0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6": [ { "comment_text": "", "digests": { "md5": "343daeb481b8ccf0bf0fbcfef6aafe60", "sha256": "150d8617d8775f34fbfe35667d075e5b0fd14ce4b2c3bbb096d135f7e0895107" }, "downloads": -1, "filename": "corpus_toolkit-0.6.tar.gz", "has_sig": false, "md5_digest": "343daeb481b8ccf0bf0fbcfef6aafe60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9178, "upload_time": "2019-08-12T10:05:25", "upload_time_iso_8601": "2019-08-12T10:05:25.705119Z", "url": "https://files.pythonhosted.org/packages/f6/25/35b080fe88048005254ae7ff7c5ca53995a8c345bf9fd45c28ea72a24ccb/corpus_toolkit-0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7": [ { "comment_text": "", "digests": { "md5": "2c5dad26474f9c7cd728e2edd7e6201d", "sha256": "27e85a95aff084672014cd61fcabb4d05721247794c628a238372ebeeb601163" }, "downloads": -1, "filename": "corpus_toolkit-0.7.tar.gz", "has_sig": false, "md5_digest": "2c5dad26474f9c7cd728e2edd7e6201d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9188, "upload_time": "2019-08-12T10:15:09", "upload_time_iso_8601": "2019-08-12T10:15:09.560540Z", "url": "https://files.pythonhosted.org/packages/87/d5/dc800a8bc91f528fa11babb10f97890f3468f8c56090a9107009e5ee81f1/corpus_toolkit-0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8": [ { "comment_text": "", "digests": { "md5": "e777f32e8437f364571db8b79e597e5f", "sha256": "003ffe236a9b3f0f333244a014e5550448176447fa920e88032338c5ebf47b16" }, "downloads": -1, "filename": "corpus_toolkit-0.8.tar.gz", "has_sig": false, "md5_digest": "e777f32e8437f364571db8b79e597e5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1690738, "upload_time": "2019-08-12T10:26:42", "upload_time_iso_8601": "2019-08-12T10:26:42.525642Z", "url": "https://files.pythonhosted.org/packages/52/f0/fa9ca1b24a5c3c919bbdad6d23809daeb66b5df5e25b60d3de2145f37f0b/corpus_toolkit-0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9": [ { "comment_text": "", "digests": { "md5": "ae324d90c53164fcd5d75accb565ff2c", "sha256": "c169e2470534404f623367e310e0e061905633d6accd7f8676a849ecfb11aa38" }, "downloads": -1, "filename": "corpus_toolkit-0.9.tar.gz", "has_sig": false, "md5_digest": "ae324d90c53164fcd5d75accb565ff2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1691131, "upload_time": "2019-08-12T23:21:00", "upload_time_iso_8601": "2019-08-12T23:21:00.251635Z", "url": "https://files.pythonhosted.org/packages/54/60/6819aeb268fa3f566b82eab0b8ea9665d57ad6d192fcd4681466f6152a4b/corpus_toolkit-0.9.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6c6dce51e6928087d6181c91ec9c32cc", "sha256": "9da70a6482a4d9dab3fcacf0f8fc48914ba31d87a65f5bb1591b43b86be7396f" }, "downloads": -1, "filename": "corpus_toolkit-0.32-py3-none-any.whl", "has_sig": false, "md5_digest": "6c6dce51e6928087d6181c91ec9c32cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1719889, "upload_time": "2021-11-11T14:59:22", "upload_time_iso_8601": "2021-11-11T14:59:22.483292Z", "url": "https://files.pythonhosted.org/packages/fe/b1/a7f41ea0368bfaa31f045683745a71cc3e4ab0cfbfdf32cf21ce93aa57aa/corpus_toolkit-0.32-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e0898e25e462e777ff7ce63683cfab57", "sha256": "57d5b62b53637b5c43c3ca1b24d5464be8fe113ade762208f33e5b5bfe2da213" }, "downloads": -1, "filename": "corpus_toolkit-0.32.tar.gz", "has_sig": false, "md5_digest": "e0898e25e462e777ff7ce63683cfab57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1713862, "upload_time": "2021-11-11T14:59:32", "upload_time_iso_8601": "2021-11-11T14:59:32.404370Z", "url": "https://files.pythonhosted.org/packages/d6/ab/7e545f6fa4b04adb1da911b37bc190673cad56479a5ab1b7ecd16293f753/corpus_toolkit-0.32.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }