nltk 3.2__zip → 3.3__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nltk-3.2 → nltk-3.3}/INSTALL.txt +6 -6
- {nltk-3.2 → nltk-3.3}/LICENSE.txt +13 -13
- {nltk-3.2 → nltk-3.3}/MANIFEST.in +6 -6
- {nltk-3.2/nltk.egg-info → nltk-3.3}/PKG-INFO +13 -5
- nltk-3.2/README.txt → nltk-3.3/README.md +49 -48
- nltk-3.3/nltk/VERSION +1 -0
- {nltk-3.2 → nltk-3.3}/nltk/__init__.py +185 -185
- {nltk-3.2 → nltk-3.3}/nltk/app/__init__.py +52 -53
- {nltk-3.2 → nltk-3.3}/nltk/app/chartparser_app.py +2276 -2276
- {nltk-3.2 → nltk-3.3}/nltk/app/chunkparser_app.py +1262 -1264
- {nltk-3.2 → nltk-3.3}/nltk/app/collocations_app.py +347 -350
- {nltk-3.2 → nltk-3.3}/nltk/app/concordance_app.py +568 -570
- {nltk-3.2 → nltk-3.3}/nltk/app/nemo_app.py +156 -155
- {nltk-3.2 → nltk-3.3}/nltk/app/rdparser_app.py +892 -894
- {nltk-3.2 → nltk-3.3}/nltk/app/srparser_app.py +809 -809
- {nltk-3.2 → nltk-3.3}/nltk/app/wordfreq_app.py +32 -32
- {nltk-3.2 → nltk-3.3}/nltk/app/wordnet_app.py +968 -968
- {nltk-3.2 → nltk-3.3}/nltk/book.py +91 -90
- {nltk-3.2 → nltk-3.3}/nltk/ccg/__init__.py +22 -22
- {nltk-3.2 → nltk-3.3}/nltk/ccg/api.py +359 -335
- {nltk-3.2 → nltk-3.3}/nltk/ccg/chart.py +394 -361
- {nltk-3.2 → nltk-3.3}/nltk/ccg/combinator.py +343 -312
- {nltk-3.2 → nltk-3.3}/nltk/ccg/lexicon.py +328 -290
- nltk-3.3/nltk/ccg/logic.py +46 -0
- {nltk-3.2 → nltk-3.3}/nltk/chat/__init__.py +49 -49
- {nltk-3.2 → nltk-3.3}/nltk/chat/eliza.py +244 -244
- {nltk-3.2 → nltk-3.3}/nltk/chat/iesha.py +140 -140
- {nltk-3.2 → nltk-3.3}/nltk/chat/rude.py +92 -92
- {nltk-3.2 → nltk-3.3}/nltk/chat/suntsu.py +117 -117
- {nltk-3.2 → nltk-3.3}/nltk/chat/util.py +122 -120
- {nltk-3.2 → nltk-3.3}/nltk/chat/zen.py +282 -282
- {nltk-3.2 → nltk-3.3}/nltk/chunk/__init__.py +190 -190
- {nltk-3.2 → nltk-3.3}/nltk/chunk/api.py +51 -51
- {nltk-3.2 → nltk-3.3}/nltk/chunk/named_entity.py +331 -331
- {nltk-3.2 → nltk-3.3}/nltk/chunk/regexp.py +1390 -1384
- {nltk-3.2 → nltk-3.3}/nltk/chunk/util.py +600 -600
- {nltk-3.2 → nltk-3.3}/nltk/classify/__init__.py +98 -98
- {nltk-3.2 → nltk-3.3}/nltk/classify/api.py +193 -193
- {nltk-3.2 → nltk-3.3}/nltk/classify/decisiontree.py +295 -295
- {nltk-3.2 → nltk-3.3}/nltk/classify/maxent.py +1510 -1492
- {nltk-3.2 → nltk-3.3}/nltk/classify/megam.py +179 -178
- {nltk-3.2 → nltk-3.3}/nltk/classify/naivebayes.py +245 -242
- {nltk-3.2 → nltk-3.3}/nltk/classify/positivenaivebayes.py +170 -170
- {nltk-3.2 → nltk-3.3}/nltk/classify/rte_classify.py +160 -191
- {nltk-3.2 → nltk-3.3}/nltk/classify/scikitlearn.py +153 -151
- {nltk-3.2 → nltk-3.3}/nltk/classify/senna.py +183 -181
- {nltk-3.2 → nltk-3.3}/nltk/classify/svm.py +15 -15
- {nltk-3.2 → nltk-3.3}/nltk/classify/tadm.py +113 -112
- {nltk-3.2 → nltk-3.3}/nltk/classify/textcat.py +193 -193
- {nltk-3.2 → nltk-3.3}/nltk/classify/util.py +324 -312
- {nltk-3.2 → nltk-3.3}/nltk/classify/weka.py +346 -345
- {nltk-3.2 → nltk-3.3}/nltk/cluster/__init__.py +86 -86
- {nltk-3.2 → nltk-3.3}/nltk/cluster/api.py +74 -70
- {nltk-3.2 → nltk-3.3}/nltk/cluster/em.py +247 -247
- {nltk-3.2 → nltk-3.3}/nltk/cluster/gaac.py +168 -168
- {nltk-3.2 → nltk-3.3}/nltk/cluster/kmeans.py +221 -221
- {nltk-3.2 → nltk-3.3}/nltk/cluster/util.py +304 -289
- nltk-3.3/nltk/collections.py +640 -0
- {nltk-3.2 → nltk-3.3}/nltk/collocations.py +388 -388
- nltk-3.3/nltk/compat.py +365 -0
- {nltk-3.2 → nltk-3.3}/nltk/corpus/__init__.py +341 -320
- {nltk-3.2 → nltk-3.3}/nltk/corpus/europarl_raw.py +44 -44
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/__init__.py +147 -145
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/aligned.py +115 -114
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/api.py +448 -446
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/bnc.py +252 -252
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/bracket_parse.py +227 -227
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/categorized_sents.py +179 -178
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/chasen.py +140 -139
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/childes.py +522 -494
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/chunked.py +212 -212
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/cmudict.py +97 -95
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/comparative_sents.py +280 -278
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/conll.py +528 -521
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/crubadan.py +116 -116
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/dependency.py +101 -101
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/framenet.py +3059 -2093
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/ieer.py +112 -111
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/indian.py +85 -86
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/ipipan.py +332 -331
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/knbc.py +187 -187
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/lin.py +156 -156
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/mte.py +311 -310
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/nkjp.py +429 -428
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/nombank.py +421 -421
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/nps_chat.py +73 -73
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/opinion_lexicon.py +115 -115
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/panlex_lite.py +165 -165
- nltk-3.3/nltk/corpus/reader/pl196x.py +292 -0
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/plaintext.py +232 -233
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/ppattach.py +96 -95
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/propbank.py +479 -481
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/pros_cons.py +128 -126
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/reviews.py +330 -328
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/rte.py +144 -146
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/semcor.py +256 -256
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/senseval.py +203 -201
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/sentiwordnet.py +137 -137
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/sinica_treebank.py +75 -75
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/string_category.py +60 -59
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/switchboard.py +119 -119
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/tagged.py +295 -294
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/timit.py +452 -450
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/toolbox.py +68 -68
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/twitter.py +155 -157
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/udhr.py +80 -80
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/util.py +804 -800
- nltk-3.3/nltk/corpus/reader/verbnet.py +595 -0
- nltk-3.3/nltk/corpus/reader/wordlist.py +134 -0
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/wordnet.py +2108 -2036
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/xmldocs.py +392 -387
- {nltk-3.2 → nltk-3.3}/nltk/corpus/reader/ycoe.py +243 -242
- {nltk-3.2 → nltk-3.3}/nltk/corpus/util.py +144 -127
- {nltk-3.2 → nltk-3.3}/nltk/data.py +1487 -1451
- {nltk-3.2 → nltk-3.3}/nltk/decorators.py +219 -215
- {nltk-3.2 → nltk-3.3}/nltk/downloader.py +2278 -2274
- {nltk-3.2 → nltk-3.3}/nltk/draw/__init__.py +27 -27
- {nltk-3.2 → nltk-3.3}/nltk/draw/cfg.py +774 -777
- {nltk-3.2 → nltk-3.3}/nltk/draw/dispersion.py +58 -58
- {nltk-3.2 → nltk-3.3}/nltk/draw/table.py +1098 -1098
- {nltk-3.2 → nltk-3.3}/nltk/draw/tree.py +963 -966
- {nltk-3.2 → nltk-3.3}/nltk/draw/util.py +2356 -2356
- {nltk-3.2 → nltk-3.3}/nltk/featstruct.py +2617 -2500
- {nltk-3.2 → nltk-3.3}/nltk/grammar.py +1559 -1516
- {nltk-3.2 → nltk-3.3}/nltk/help.py +56 -56
- {nltk-3.2 → nltk-3.3}/nltk/inference/__init__.py +20 -20
- {nltk-3.2 → nltk-3.3}/nltk/inference/api.py +597 -589
- {nltk-3.2 → nltk-3.3}/nltk/inference/discourse.py +612 -608
- {nltk-3.2 → nltk-3.3}/nltk/inference/mace.py +311 -311
- {nltk-3.2 → nltk-3.3}/nltk/inference/nonmonotonic.py +509 -509
- {nltk-3.2 → nltk-3.3}/nltk/inference/prover9.py +431 -431
- {nltk-3.2 → nltk-3.3}/nltk/inference/resolution.py +687 -687
- {nltk-3.2 → nltk-3.3}/nltk/inference/tableau.py +607 -607
- {nltk-3.2 → nltk-3.3}/nltk/internals.py +982 -982
- {nltk-3.2 → nltk-3.3}/nltk/jsontags.py +63 -63
- {nltk-3.2 → nltk-3.3}/nltk/lazyimport.py +142 -142
- {nltk-3.2 → nltk-3.3}/nltk/metrics/__init__.py +30 -29
- {nltk-3.2 → nltk-3.3}/nltk/metrics/agreement.py +421 -401
- nltk-3.3/nltk/metrics/aline.py +607 -0
- {nltk-3.2 → nltk-3.3}/nltk/metrics/association.py +414 -410
- {nltk-3.2 → nltk-3.3}/nltk/metrics/confusionmatrix.py +206 -206
- {nltk-3.2 → nltk-3.3}/nltk/metrics/distance.py +207 -202
- {nltk-3.2 → nltk-3.3}/nltk/metrics/paice.py +381 -381
- {nltk-3.2 → nltk-3.3}/nltk/metrics/scores.py +228 -228
- {nltk-3.2 → nltk-3.3}/nltk/metrics/segmentation.py +231 -232
- {nltk-3.2 → nltk-3.3}/nltk/metrics/spearman.py +69 -69
- {nltk-3.2 → nltk-3.3}/nltk/misc/__init__.py +11 -11
- {nltk-3.2 → nltk-3.3}/nltk/misc/babelfish.py +10 -10
- {nltk-3.2 → nltk-3.3}/nltk/misc/chomsky.py +135 -133
- {nltk-3.2 → nltk-3.3}/nltk/misc/minimalset.py +83 -83
- {nltk-3.2 → nltk-3.3}/nltk/misc/sort.py +157 -157
- {nltk-3.2 → nltk-3.3}/nltk/misc/wordfinder.py +129 -129
- {nltk-3.2 → nltk-3.3}/nltk/parse/__init__.py +81 -80
- {nltk-3.2 → nltk-3.3}/nltk/parse/api.py +66 -66
- {nltk-3.2 → nltk-3.3}/nltk/parse/bllip.py +282 -282
- {nltk-3.2 → nltk-3.3}/nltk/parse/chart.py +1682 -1681
- nltk-3.3/nltk/parse/corenlp.py +780 -0
- {nltk-3.2 → nltk-3.3}/nltk/parse/dependencygraph.py +760 -758
- {nltk-3.2 → nltk-3.3}/nltk/parse/earleychart.py +452 -451
- {nltk-3.2 → nltk-3.3}/nltk/parse/evaluate.py +129 -129
- {nltk-3.2 → nltk-3.3}/nltk/parse/featurechart.py +580 -578
- {nltk-3.2 → nltk-3.3}/nltk/parse/generate.py +87 -76
- {nltk-3.2 → nltk-3.3}/nltk/parse/malt.py +356 -356
- {nltk-3.2 → nltk-3.3}/nltk/parse/nonprojectivedependencyparser.py +783 -783
- {nltk-3.2 → nltk-3.3}/nltk/parse/pchart.py +522 -522
- {nltk-3.2 → nltk-3.3}/nltk/parse/projectivedependencyparser.py +579 -578
- {nltk-3.2 → nltk-3.3}/nltk/parse/recursivedescent.py +655 -656
- {nltk-3.2 → nltk-3.3}/nltk/parse/shiftreduce.py +458 -459
- {nltk-3.2 → nltk-3.3}/nltk/parse/stanford.py +431 -406
- {nltk-3.2 → nltk-3.3}/nltk/parse/transitionparser.py +774 -772
- {nltk-3.2 → nltk-3.3}/nltk/parse/util.py +231 -231
- {nltk-3.2 → nltk-3.3}/nltk/parse/viterbi.py +401 -401
- {nltk-3.2 → nltk-3.3}/nltk/probability.py +2410 -2355
- {nltk-3.2 → nltk-3.3}/nltk/sem/__init__.py +61 -61
- {nltk-3.2 → nltk-3.3}/nltk/sem/boxer.py +1261 -1261
- {nltk-3.2 → nltk-3.3}/nltk/sem/chat80.py +782 -782
- {nltk-3.2 → nltk-3.3}/nltk/sem/cooper_storage.py +118 -118
- {nltk-3.2 → nltk-3.3}/nltk/sem/drt.py +1258 -1257
- {nltk-3.2 → nltk-3.3}/nltk/sem/drt_glue_demo.py +485 -489
- {nltk-3.2 → nltk-3.3}/nltk/sem/evaluate.py +790 -784
- {nltk-3.2 → nltk-3.3}/nltk/sem/glue.py +696 -694
- {nltk-3.2 → nltk-3.3}/nltk/sem/hole.py +386 -384
- {nltk-3.2 → nltk-3.3}/nltk/sem/lfg.py +210 -208
- {nltk-3.2 → nltk-3.3}/nltk/sem/linearlogic.py +451 -449
- {nltk-3.2 → nltk-3.3}/nltk/sem/logic.py +1910 -1910
- {nltk-3.2 → nltk-3.3}/nltk/sem/relextract.py +476 -483
- {nltk-3.2 → nltk-3.3}/nltk/sem/skolemize.py +101 -101
- {nltk-3.2 → nltk-3.3}/nltk/sem/util.py +249 -249
- {nltk-3.2 → nltk-3.3}/nltk/sentiment/__init__.py +14 -14
- {nltk-3.2 → nltk-3.3}/nltk/sentiment/sentiment_analyzer.py +229 -229
- {nltk-3.2 → nltk-3.3}/nltk/sentiment/util.py +762 -752
- {nltk-3.2 → nltk-3.3}/nltk/sentiment/vader.py +443 -445
- {nltk-3.2 → nltk-3.3}/nltk/stem/__init__.py +31 -33
- {nltk-3.2 → nltk-3.3}/nltk/stem/api.py +28 -25
- nltk-3.3/nltk/stem/arlstem.py +369 -0
- {nltk-3.2 → nltk-3.3}/nltk/stem/isri.py +345 -345
- {nltk-3.2 → nltk-3.3}/nltk/stem/lancaster.py +337 -310
- nltk-3.3/nltk/stem/porter.py +710 -0
- {nltk-3.2 → nltk-3.3}/nltk/stem/regexp.py +61 -61
- {nltk-3.2 → nltk-3.3}/nltk/stem/rslp.py +142 -142
- {nltk-3.2 → nltk-3.3}/nltk/stem/snowball.py +4236 -3712
- {nltk-3.2 → nltk-3.3}/nltk/stem/util.py +22 -12
- {nltk-3.2 → nltk-3.3}/nltk/stem/wordnet.py +51 -51
- {nltk-3.2 → nltk-3.3}/nltk/tag/__init__.py +152 -127
- {nltk-3.2 → nltk-3.3}/nltk/tag/api.py +86 -81
- {nltk-3.2 → nltk-3.3}/nltk/tag/brill.py +424 -426
- {nltk-3.2 → nltk-3.3}/nltk/tag/brill_trainer.py +608 -608
- {nltk-3.2 → nltk-3.3}/nltk/tag/crf.py +204 -200
- {nltk-3.2 → nltk-3.3}/nltk/tag/hmm.py +1277 -1277
- {nltk-3.2 → nltk-3.3}/nltk/tag/hunpos.py +132 -132
- {nltk-3.2 → nltk-3.3}/nltk/tag/mapping.py +101 -101
- {nltk-3.2 → nltk-3.3}/nltk/tag/perceptron.py +329 -314
- {nltk-3.2 → nltk-3.3}/nltk/tag/senna.py +147 -145
- {nltk-3.2 → nltk-3.3}/nltk/tag/sequential.py +740 -736
- {nltk-3.2 → nltk-3.3}/nltk/tag/stanford.py +219 -196
- {nltk-3.2 → nltk-3.3}/nltk/tag/tnt.py +595 -604
- {nltk-3.2 → nltk-3.3}/nltk/tag/util.py +72 -72
- {nltk-3.2 → nltk-3.3}/nltk/tbl/__init__.py +28 -28
- {nltk-3.2 → nltk-3.3}/nltk/tbl/api.py +1 -1
- {nltk-3.2 → nltk-3.3}/nltk/tbl/demo.py +366 -366
- {nltk-3.2 → nltk-3.3}/nltk/tbl/erroranalysis.py +39 -39
- {nltk-3.2 → nltk-3.3}/nltk/tbl/feature.py +259 -261
- {nltk-3.2 → nltk-3.3}/nltk/tbl/rule.py +321 -321
- {nltk-3.2 → nltk-3.3}/nltk/tbl/template.py +303 -308
- {nltk-3.2 → nltk-3.3}/nltk/test/__init__.py +18 -18
- {nltk-3.2 → nltk-3.3}/nltk/test/all.py +24 -23
- {nltk-3.2 → nltk-3.3}/nltk/test/bleu.doctest +14 -14
- {nltk-3.2 → nltk-3.3}/nltk/test/bnc.doctest +60 -60
- {nltk-3.2 → nltk-3.3}/nltk/test/ccg.doctest +376 -395
- nltk-3.3/nltk/test/ccg_semantics.doctest +553 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/chat80.doctest +234 -234
- {nltk-3.2 → nltk-3.3}/nltk/test/childes.doctest +184 -184
- {nltk-3.2 → nltk-3.3}/nltk/test/childes_fixt.py +14 -13
- {nltk-3.2 → nltk-3.3}/nltk/test/chunk.doctest +373 -373
- {nltk-3.2 → nltk-3.3}/nltk/test/classify.doctest +185 -185
- {nltk-3.2 → nltk-3.3}/nltk/test/classify_fixt.py +11 -10
- nltk-3.3/nltk/test/collections.doctest +20 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/collocations.doctest +276 -276
- {nltk-3.2 → nltk-3.3}/nltk/test/compat.doctest +134 -138
- {nltk-3.2 → nltk-3.3}/nltk/test/compat_fixt.py +9 -8
- nltk-3.3/nltk/test/concordance.doctest +55 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/corpus.doctest +2200 -2212
- {nltk-3.2 → nltk-3.3}/nltk/test/corpus_fixt.py +3 -3
- {nltk-3.2 → nltk-3.3}/nltk/test/crubadan.doctest +65 -65
- {nltk-3.2 → nltk-3.3}/nltk/test/data.doctest +379 -379
- {nltk-3.2 → nltk-3.3}/nltk/test/dependency.doctest +241 -241
- {nltk-3.2 → nltk-3.3}/nltk/test/discourse.doctest +546 -546
- {nltk-3.2 → nltk-3.3}/nltk/test/discourse_fixt.py +14 -13
- {nltk-3.2 → nltk-3.3}/nltk/test/doctest_nose_plugin.py +159 -156
- {nltk-3.2 → nltk-3.3}/nltk/test/drt.doctest +517 -517
- {nltk-3.2 → nltk-3.3}/nltk/test/featgram.doctest +607 -607
- {nltk-3.2 → nltk-3.3}/nltk/test/featstruct.doctest +1229 -1230
- {nltk-3.2 → nltk-3.3}/nltk/test/framenet.doctest +288 -239
- {nltk-3.2 → nltk-3.3}/nltk/test/generate.doctest +67 -67
- {nltk-3.2 → nltk-3.3}/nltk/test/gensim.doctest +140 -141
- {nltk-3.2 → nltk-3.3}/nltk/test/gensim_fixt.py +10 -9
- {nltk-3.2 → nltk-3.3}/nltk/test/gluesemantics.doctest +384 -386
- {nltk-3.2 → nltk-3.3}/nltk/test/gluesemantics_malt.doctest +68 -68
- {nltk-3.2 → nltk-3.3}/nltk/test/gluesemantics_malt_fixt.py +12 -11
- {nltk-3.2 → nltk-3.3}/nltk/test/grammar.doctest +48 -48
- {nltk-3.2 → nltk-3.3}/nltk/test/grammartestsuites.doctest +109 -109
- {nltk-3.2 → nltk-3.3}/nltk/test/index.doctest +100 -100
- {nltk-3.2 → nltk-3.3}/nltk/test/inference.doctest +534 -534
- {nltk-3.2 → nltk-3.3}/nltk/test/inference_fixt.py +12 -11
- {nltk-3.2 → nltk-3.3}/nltk/test/internals.doctest +140 -140
- {nltk-3.2 → nltk-3.3}/nltk/test/japanese.doctest +48 -48
- {nltk-3.2 → nltk-3.3}/nltk/test/logic.doctest +1098 -1098
- {nltk-3.2 → nltk-3.3}/nltk/test/metrics.doctest +270 -270
- {nltk-3.2 → nltk-3.3}/nltk/test/misc.doctest +118 -118
- {nltk-3.2 → nltk-3.3}/nltk/test/nonmonotonic.doctest +286 -286
- {nltk-3.2 → nltk-3.3}/nltk/test/nonmonotonic_fixt.py +12 -11
- {nltk-3.2 → nltk-3.3}/nltk/test/paice.doctest +35 -35
- {nltk-3.2 → nltk-3.3}/nltk/test/parse.doctest +884 -884
- {nltk-3.2 → nltk-3.3}/nltk/test/portuguese_en.doctest +565 -565
- {nltk-3.2 → nltk-3.3}/nltk/test/portuguese_en_fixt.py +16 -16
- {nltk-3.2 → nltk-3.3}/nltk/test/probability.doctest +304 -304
- {nltk-3.2 → nltk-3.3}/nltk/test/probability_fixt.py +13 -12
- {nltk-3.2 → nltk-3.3}/nltk/test/propbank.doctest +176 -176
- {nltk-3.2 → nltk-3.3}/nltk/test/relextract.doctest +263 -263
- {nltk-3.2 → nltk-3.3}/nltk/test/resolution.doctest +221 -221
- {nltk-3.2 → nltk-3.3}/nltk/test/runtests.py +86 -64
- {nltk-3.2 → nltk-3.3}/nltk/test/segmentation_fixt.py +10 -10
- {nltk-3.2 → nltk-3.3}/nltk/test/semantics.doctest +665 -665
- {nltk-3.2 → nltk-3.3}/nltk/test/semantics_fixt.py +7 -7
- {nltk-3.2 → nltk-3.3}/nltk/test/sentiment.doctest +233 -233
- {nltk-3.2 → nltk-3.3}/nltk/test/sentiwordnet.doctest +41 -41
- {nltk-3.2 → nltk-3.3}/nltk/test/simple.doctest +85 -85
- {nltk-3.2 → nltk-3.3}/nltk/test/stem.doctest +78 -78
- {nltk-3.2 → nltk-3.3}/nltk/test/tag.doctest +33 -33
- {nltk-3.2 → nltk-3.3}/nltk/test/tokenize.doctest +273 -166
- {nltk-3.2 → nltk-3.3}/nltk/test/toolbox.doctest +307 -307
- {nltk-3.2 → nltk-3.3}/nltk/test/translate.doctest +242 -242
- {nltk-3.2 → nltk-3.3}/nltk/test/translate_fixt.py +3 -3
- {nltk-3.2 → nltk-3.3}/nltk/test/tree.doctest +1101 -1101
- {nltk-3.2 → nltk-3.3}/nltk/test/treeprettyprinter.doctest +127 -127
- {nltk-3.2 → nltk-3.3}/nltk/test/treetransforms.doctest +156 -156
- nltk-3.3/nltk/test/unit/test_2x_compat.py +63 -0
- nltk-3.3/nltk/test/unit/test_aline.py +52 -0
- nltk-3.3/nltk/test/unit/test_chunk.py +56 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_classify.py +55 -53
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_collocations.py +88 -79
- nltk-3.3/nltk/test/unit/test_concordance.py +98 -0
- nltk-3.3/nltk/test/unit/test_corenlp.py +1000 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_corpora.py +200 -183
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_corpus_views.py +45 -45
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_hmm.py +88 -88
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_json2csv_corpus.py +188 -187
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_naivebayes.py +26 -26
- nltk-3.3/nltk/test/unit/test_rte_classify.py +86 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_seekable_unicode_stream_reader.py +124 -124
- nltk-3.3/nltk/test/unit/test_senna.py +74 -0
- nltk-3.3/nltk/test/unit/test_stem.py +121 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_tag.py +20 -20
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_tgrep.py +628 -626
- nltk-3.3/nltk/test/unit/test_tokenize.py +168 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/test_twitter_auth.py +185 -185
- nltk-3.3/nltk/test/unit/test_wordnet.py +134 -0
- nltk-3.3/nltk/test/unit/translate/test_bleu.py +244 -0
- nltk-3.3/nltk/test/unit/translate/test_gdfa.py +57 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/test_ibm1.py +75 -75
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/test_ibm2.py +87 -87
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/test_ibm3.py +105 -105
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/test_ibm4.py +126 -126
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/test_ibm5.py +166 -166
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/test_ibm_model.py +270 -270
- nltk-3.3/nltk/test/unit/translate/test_nist.py +37 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/test_stack_decoder.py +300 -300
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/utils.py +41 -41
- {nltk-3.2 → nltk-3.3}/nltk/test/util.doctest +48 -48
- {nltk-3.2 → nltk-3.3}/nltk/test/wordnet.doctest +595 -581
- {nltk-3.2 → nltk-3.3}/nltk/test/wordnet_fixt.py +7 -6
- {nltk-3.2 → nltk-3.3}/nltk/test/wordnet_lch.doctest +53 -53
- {nltk-3.2 → nltk-3.3}/nltk/test/wsd.doctest +68 -68
- {nltk-3.2 → nltk-3.3}/nltk/text.py +663 -610
- {nltk-3.2 → nltk-3.3}/nltk/tgrep.py +938 -937
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/__init__.py +130 -107
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/api.py +77 -78
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/casual.py +343 -342
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/mwe.py +120 -120
- nltk-3.3/nltk/tokenize/nist.py +173 -0
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/punkt.py +1620 -1601
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/regexp.py +208 -202
- nltk-3.3/nltk/tokenize/repp.py +151 -0
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/sexpr.py +140 -142
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/simple.py +138 -136
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/stanford.py +117 -113
- nltk-3.3/nltk/tokenize/stanford_segmenter.py +246 -0
- {nltk-3.2 → nltk-3.3}/nltk/tokenize/texttiling.py +458 -460
- nltk-3.3/nltk/tokenize/toktok.py +155 -0
- nltk-3.3/nltk/tokenize/treebank.py +363 -0
- nltk-3.3/nltk/tokenize/util.py +261 -0
- {nltk-3.2 → nltk-3.3}/nltk/toolbox.py +499 -497
- {nltk-3.2 → nltk-3.3}/nltk/translate/__init__.py +24 -24
- {nltk-3.2 → nltk-3.3}/nltk/translate/api.py +331 -321
- {nltk-3.2 → nltk-3.3}/nltk/translate/bleu_score.py +615 -556
- nltk-3.3/nltk/translate/chrf_score.py +137 -0
- {nltk-3.2 → nltk-3.3}/nltk/translate/gale_church.py +248 -235
- {nltk-3.2 → nltk-3.3}/nltk/translate/gdfa.py +135 -131
- nltk-3.3/nltk/translate/gleu_score.py +193 -0
- {nltk-3.2 → nltk-3.3}/nltk/translate/ibm1.py +250 -241
- {nltk-3.2 → nltk-3.3}/nltk/translate/ibm2.py +308 -308
- {nltk-3.2 → nltk-3.3}/nltk/translate/ibm3.py +337 -337
- {nltk-3.2 → nltk-3.3}/nltk/translate/ibm4.py +467 -467
- {nltk-3.2 → nltk-3.3}/nltk/translate/ibm5.py +639 -639
- {nltk-3.2 → nltk-3.3}/nltk/translate/ibm_model.py +536 -533
- {nltk-3.2 → nltk-3.3}/nltk/translate/metrics.py +40 -40
- nltk-3.3/nltk/translate/nist_score.py +178 -0
- {nltk-3.2 → nltk-3.3}/nltk/translate/phrase_based.py +175 -175
- {nltk-3.2 → nltk-3.3}/nltk/translate/ribes_score.py +325 -325
- {nltk-3.2 → nltk-3.3}/nltk/translate/stack_decoder.py +499 -495
- {nltk-3.2 → nltk-3.3}/nltk/tree.py +1605 -1603
- {nltk-3.2 → nltk-3.3}/nltk/treeprettyprinter.py +564 -564
- {nltk-3.2 → nltk-3.3}/nltk/treetransforms.py +309 -309
- {nltk-3.2 → nltk-3.3}/nltk/twitter/__init__.py +28 -28
- {nltk-3.2 → nltk-3.3}/nltk/twitter/api.py +141 -136
- {nltk-3.2 → nltk-3.3}/nltk/twitter/common.py +264 -258
- {nltk-3.2 → nltk-3.3}/nltk/twitter/twitter_demo.py +288 -288
- {nltk-3.2 → nltk-3.3}/nltk/twitter/twitterclient.py +530 -530
- {nltk-3.2 → nltk-3.3}/nltk/twitter/util.py +147 -146
- nltk-3.3/nltk/util.py +751 -0
- {nltk-3.2 → nltk-3.3}/nltk/wsd.py +53 -53
- {nltk-3.2 → nltk-3.3/nltk.egg-info}/PKG-INFO +13 -5
- {nltk-3.2 → nltk-3.3}/nltk.egg-info/SOURCES.txt +26 -3
- nltk-3.3/nltk.egg-info/requires.txt +31 -0
- {nltk-3.2 → nltk-3.3}/setup.cfg +0 -1
- {nltk-3.2 → nltk-3.3}/setup.py +102 -75
- nltk-3.2/nltk/VERSION +0 -1
- nltk-3.2/nltk/compat.py +0 -680
- nltk-3.2/nltk/corpus/reader/pl196x.py +0 -278
- nltk-3.2/nltk/corpus/reader/verbnet.py +0 -408
- nltk-3.2/nltk/corpus/reader/wordlist.py +0 -37
- nltk-3.2/nltk/sentiment/vader_lexicon.txt +0 -7517
- nltk-3.2/nltk/six.py +0 -868
- nltk-3.2/nltk/stem/porter.py +0 -692
- nltk-3.2/nltk/test/unit/test_2x_compat.py +0 -26
- nltk-3.2/nltk/test/unit/test_stem.py +0 -36
- nltk-3.2/nltk/test/unit/test_tokenize.py +0 -23
- nltk-3.2/nltk/test/unit/translate/test_bleu.py +0 -84
- nltk-3.2/nltk/tokenize/treebank.py +0 -124
- nltk-3.2/nltk/tokenize/util.py +0 -90
- nltk-3.2/nltk/util.py +0 -1364
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/__init__.py +0 -0
- {nltk-3.2 → nltk-3.3}/nltk/test/unit/translate/__init__.py +0 -0
- {nltk-3.2 → nltk-3.3}/nltk.egg-info/dependency_links.txt +0 -0
- {nltk-3.2 → nltk-3.3}/nltk.egg-info/not-zip-safe +0 -0
- {nltk-3.2 → nltk-3.3}/nltk.egg-info/top_level.txt +0 -0
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
# Natural Language Toolkit: Toolbox Reader
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
4
|
-
# Author: Greg Aumann <greg_aumann@sil.org>
|
|
5
|
-
# Stuart Robinson <Stuart.Robinson@mpi.nl>
|
|
6
|
-
# Steven Bird <stevenbird1@gmail.com>
|
|
7
|
-
# URL: <http://nltk.org/>
|
|
8
|
-
# For license information, see LICENSE.TXT
|
|
9
|
-
|
|
10
|
-
"""
|
|
11
|
-
Module for reading, writing and manipulating
|
|
12
|
-
Toolbox databases and settings fileids.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
import os
|
|
16
|
-
import re
|
|
17
|
-
import codecs
|
|
18
|
-
|
|
19
|
-
from
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
from nltk.corpus.reader.util import *
|
|
23
|
-
from nltk.corpus.reader.api import *
|
|
24
|
-
|
|
25
|
-
class ToolboxCorpusReader(CorpusReader):
|
|
26
|
-
def xml(self, fileids, key=None):
|
|
27
|
-
return concat([ToolboxData(path, enc).parse(key=key)
|
|
28
|
-
for (path, enc) in self.abspaths(fileids, True)])
|
|
29
|
-
|
|
30
|
-
def fields(self, fileids, strip=True, unwrap=True, encoding='utf8',
|
|
31
|
-
errors='strict', unicode_fields=None):
|
|
32
|
-
return concat([list(ToolboxData(fileid,enc).fields(
|
|
33
|
-
strip, unwrap, encoding, errors, unicode_fields))
|
|
34
|
-
for (fileid, enc)
|
|
35
|
-
in self.abspaths(fileids, include_encoding=True)])
|
|
36
|
-
|
|
37
|
-
# should probably be done lazily:
|
|
38
|
-
def entries(self, fileids, **kwargs):
|
|
39
|
-
if 'key' in kwargs:
|
|
40
|
-
key = kwargs['key']
|
|
41
|
-
del kwargs['key']
|
|
42
|
-
else:
|
|
43
|
-
key = 'lx' # the default key in MDF
|
|
44
|
-
entries = []
|
|
45
|
-
for marker, contents in self.fields(fileids, **kwargs):
|
|
46
|
-
if marker == key:
|
|
47
|
-
entries.append((contents, []))
|
|
48
|
-
else:
|
|
49
|
-
try:
|
|
50
|
-
entries[-1][-1].append((marker, contents))
|
|
51
|
-
except IndexError:
|
|
52
|
-
pass
|
|
53
|
-
return entries
|
|
54
|
-
|
|
55
|
-
def words(self, fileids, key='lx'):
|
|
56
|
-
return [contents for marker, contents in self.fields(fileids) if marker == key]
|
|
57
|
-
|
|
58
|
-
def raw(self, fileids):
|
|
59
|
-
if fileids is None: fileids = self._fileids
|
|
60
|
-
elif isinstance(fileids,
|
|
61
|
-
return concat([self.open(f).read() for f in fileids])
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def demo():
|
|
65
|
-
pass
|
|
66
|
-
|
|
67
|
-
if __name__ == '__main__':
|
|
68
|
-
demo()
|
|
1
|
+
# Natural Language Toolkit: Toolbox Reader
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
|
+
# Author: Greg Aumann <greg_aumann@sil.org>
|
|
5
|
+
# Stuart Robinson <Stuart.Robinson@mpi.nl>
|
|
6
|
+
# Steven Bird <stevenbird1@gmail.com>
|
|
7
|
+
# URL: <http://nltk.org/>
|
|
8
|
+
# For license information, see LICENSE.TXT
|
|
9
|
+
|
|
10
|
+
"""
|
|
11
|
+
Module for reading, writing and manipulating
|
|
12
|
+
Toolbox databases and settings fileids.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import os
|
|
16
|
+
import re
|
|
17
|
+
import codecs
|
|
18
|
+
|
|
19
|
+
from six import string_types
|
|
20
|
+
|
|
21
|
+
from nltk.toolbox import ToolboxData
|
|
22
|
+
from nltk.corpus.reader.util import *
|
|
23
|
+
from nltk.corpus.reader.api import *
|
|
24
|
+
|
|
25
|
+
class ToolboxCorpusReader(CorpusReader):
|
|
26
|
+
def xml(self, fileids, key=None):
|
|
27
|
+
return concat([ToolboxData(path, enc).parse(key=key)
|
|
28
|
+
for (path, enc) in self.abspaths(fileids, True)])
|
|
29
|
+
|
|
30
|
+
def fields(self, fileids, strip=True, unwrap=True, encoding='utf8',
|
|
31
|
+
errors='strict', unicode_fields=None):
|
|
32
|
+
return concat([list(ToolboxData(fileid,enc).fields(
|
|
33
|
+
strip, unwrap, encoding, errors, unicode_fields))
|
|
34
|
+
for (fileid, enc)
|
|
35
|
+
in self.abspaths(fileids, include_encoding=True)])
|
|
36
|
+
|
|
37
|
+
# should probably be done lazily:
|
|
38
|
+
def entries(self, fileids, **kwargs):
|
|
39
|
+
if 'key' in kwargs:
|
|
40
|
+
key = kwargs['key']
|
|
41
|
+
del kwargs['key']
|
|
42
|
+
else:
|
|
43
|
+
key = 'lx' # the default key in MDF
|
|
44
|
+
entries = []
|
|
45
|
+
for marker, contents in self.fields(fileids, **kwargs):
|
|
46
|
+
if marker == key:
|
|
47
|
+
entries.append((contents, []))
|
|
48
|
+
else:
|
|
49
|
+
try:
|
|
50
|
+
entries[-1][-1].append((marker, contents))
|
|
51
|
+
except IndexError:
|
|
52
|
+
pass
|
|
53
|
+
return entries
|
|
54
|
+
|
|
55
|
+
def words(self, fileids, key='lx'):
|
|
56
|
+
return [contents for marker, contents in self.fields(fileids) if marker == key]
|
|
57
|
+
|
|
58
|
+
def raw(self, fileids):
|
|
59
|
+
if fileids is None: fileids = self._fileids
|
|
60
|
+
elif isinstance(fileids, string_types): fileids = [fileids]
|
|
61
|
+
return concat([self.open(f).read() for f in fileids])
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def demo():
|
|
65
|
+
pass
|
|
66
|
+
|
|
67
|
+
if __name__ == '__main__':
|
|
68
|
+
demo()
|
|
@@ -1,157 +1,155 @@
|
|
|
1
|
-
# Natural Language Toolkit: Twitter Corpus Reader
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
4
|
-
# Author: Ewan Klein <ewan@inf.ed.ac.uk>
|
|
5
|
-
# URL: <http://nltk.org/>
|
|
6
|
-
# For license information, see LICENSE.TXT
|
|
7
|
-
|
|
8
|
-
"""
|
|
9
|
-
A reader for corpora that consist of Tweets. It is assumed that the Tweets
|
|
10
|
-
have been serialised into line-delimited JSON.
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
import json
|
|
14
|
-
import os
|
|
15
|
-
|
|
16
|
-
from
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
from nltk.corpus.reader.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
as a list of
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
1
|
+
# Natural Language Toolkit: Twitter Corpus Reader
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
|
+
# Author: Ewan Klein <ewan@inf.ed.ac.uk>
|
|
5
|
+
# URL: <http://nltk.org/>
|
|
6
|
+
# For license information, see LICENSE.TXT
|
|
7
|
+
|
|
8
|
+
"""
|
|
9
|
+
A reader for corpora that consist of Tweets. It is assumed that the Tweets
|
|
10
|
+
have been serialised into line-delimited JSON.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
import os
|
|
15
|
+
|
|
16
|
+
from six import string_types
|
|
17
|
+
|
|
18
|
+
from nltk.tokenize import TweetTokenizer
|
|
19
|
+
|
|
20
|
+
from nltk.corpus.reader.util import StreamBackedCorpusView, concat, ZipFilePathPointer
|
|
21
|
+
from nltk.corpus.reader.api import CorpusReader
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class TwitterCorpusReader(CorpusReader):
|
|
25
|
+
"""
|
|
26
|
+
Reader for corpora that consist of Tweets represented as a list of line-delimited JSON.
|
|
27
|
+
|
|
28
|
+
Individual Tweets can be tokenized using the default tokenizer, or by a
|
|
29
|
+
custom tokenizer specified as a parameter to the constructor.
|
|
30
|
+
|
|
31
|
+
Construct a new Tweet corpus reader for a set of documents
|
|
32
|
+
located at the given root directory.
|
|
33
|
+
|
|
34
|
+
If you made your own tweet collection in a directory called
|
|
35
|
+
`twitter-files`, then you can initialise the reader as::
|
|
36
|
+
|
|
37
|
+
from nltk.corpus import TwitterCorpusReader
|
|
38
|
+
reader = TwitterCorpusReader(root='/path/to/twitter-files', '.*\.json')
|
|
39
|
+
|
|
40
|
+
However, the recommended approach is to set the relevant directory as the
|
|
41
|
+
value of the environmental variable `TWITTER`, and then invoke the reader
|
|
42
|
+
as follows::
|
|
43
|
+
|
|
44
|
+
root = os.environ['TWITTER']
|
|
45
|
+
reader = TwitterCorpusReader(root, '.*\.json')
|
|
46
|
+
|
|
47
|
+
If you want to work directly with the raw Tweets, the `json` library can
|
|
48
|
+
be used::
|
|
49
|
+
|
|
50
|
+
import json
|
|
51
|
+
for tweet in reader.docs():
|
|
52
|
+
print(json.dumps(tweet, indent=1, sort_keys=True))
|
|
53
|
+
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
CorpusView = StreamBackedCorpusView
|
|
57
|
+
"""
|
|
58
|
+
The corpus view class used by this reader.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def __init__(self, root, fileids=None,
|
|
62
|
+
word_tokenizer=TweetTokenizer(),
|
|
63
|
+
encoding='utf8'):
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
:param root: The root directory for this corpus.
|
|
67
|
+
|
|
68
|
+
:param fileids: A list or regexp specifying the fileids in this corpus.
|
|
69
|
+
|
|
70
|
+
:param word_tokenizer: Tokenizer for breaking the text of Tweets into
|
|
71
|
+
smaller units, including but not limited to words.
|
|
72
|
+
|
|
73
|
+
"""
|
|
74
|
+
CorpusReader.__init__(self, root, fileids, encoding)
|
|
75
|
+
|
|
76
|
+
for path in self.abspaths(self._fileids):
|
|
77
|
+
if isinstance(path, ZipFilePathPointer):
|
|
78
|
+
pass
|
|
79
|
+
elif os.path.getsize(path) == 0:
|
|
80
|
+
raise ValueError("File {} is empty".format(path))
|
|
81
|
+
"""Check that all user-created corpus files are non-empty."""
|
|
82
|
+
|
|
83
|
+
self._word_tokenizer = word_tokenizer
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def docs(self, fileids=None):
|
|
88
|
+
"""
|
|
89
|
+
Returns the full Tweet objects, as specified by `Twitter
|
|
90
|
+
documentation on Tweets
|
|
91
|
+
<https://dev.twitter.com/docs/platform-objects/tweets>`_
|
|
92
|
+
|
|
93
|
+
:return: the given file(s) as a list of dictionaries deserialised
|
|
94
|
+
from JSON.
|
|
95
|
+
:rtype: list(dict)
|
|
96
|
+
"""
|
|
97
|
+
return concat([self.CorpusView(path, self._read_tweets, encoding=enc)
|
|
98
|
+
for (path, enc, fileid) in self.abspaths(fileids, True, True)])
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def strings(self, fileids=None):
|
|
102
|
+
"""
|
|
103
|
+
Returns only the text content of Tweets in the file(s)
|
|
104
|
+
|
|
105
|
+
:return: the given file(s) as a list of Tweets.
|
|
106
|
+
:rtype: list(str)
|
|
107
|
+
"""
|
|
108
|
+
fulltweets = self.docs(fileids)
|
|
109
|
+
tweets = []
|
|
110
|
+
for jsono in fulltweets:
|
|
111
|
+
try:
|
|
112
|
+
text = jsono['text']
|
|
113
|
+
if isinstance(text, bytes):
|
|
114
|
+
text = text.decode(self.encoding)
|
|
115
|
+
tweets.append(text)
|
|
116
|
+
except KeyError:
|
|
117
|
+
pass
|
|
118
|
+
return tweets
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def tokenized(self, fileids=None):
|
|
122
|
+
"""
|
|
123
|
+
:return: the given file(s) as a list of the text content of Tweets as
|
|
124
|
+
as a list of words, screenanames, hashtags, URLs and punctuation symbols.
|
|
125
|
+
|
|
126
|
+
:rtype: list(list(str))
|
|
127
|
+
"""
|
|
128
|
+
tweets = self.strings(fileids)
|
|
129
|
+
tokenizer = self._word_tokenizer
|
|
130
|
+
return [tokenizer.tokenize(t) for t in tweets]
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def raw(self, fileids=None):
|
|
134
|
+
"""
|
|
135
|
+
Return the corpora in their raw form.
|
|
136
|
+
"""
|
|
137
|
+
if fileids is None:
|
|
138
|
+
fileids = self._fileids
|
|
139
|
+
elif isinstance(fileids, string_types):
|
|
140
|
+
fileids = [fileids]
|
|
141
|
+
return concat([self.open(f).read() for f in fileids])
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def _read_tweets(self, stream):
|
|
145
|
+
"""
|
|
146
|
+
Assumes that each line in ``stream`` is a JSON-serialised object.
|
|
147
|
+
"""
|
|
148
|
+
tweets = []
|
|
149
|
+
for i in range(10):
|
|
150
|
+
line = stream.readline()
|
|
151
|
+
if not line:
|
|
152
|
+
return tweets
|
|
153
|
+
tweet = json.loads(line)
|
|
154
|
+
tweets.append(tweet)
|
|
155
|
+
return tweets
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
UDHR corpus reader. It mostly deals with encodings.
|
|
4
|
-
"""
|
|
5
|
-
from __future__ import absolute_import, unicode_literals
|
|
6
|
-
|
|
7
|
-
from nltk.corpus.reader.util import find_corpus_fileids
|
|
8
|
-
from nltk.corpus.reader.plaintext import PlaintextCorpusReader
|
|
9
|
-
|
|
10
|
-
class UdhrCorpusReader(PlaintextCorpusReader):
|
|
11
|
-
|
|
12
|
-
ENCODINGS = [
|
|
13
|
-
('.*-Latin1$', 'latin-1'),
|
|
14
|
-
('.*-Hebrew$', 'hebrew'),
|
|
15
|
-
('.*-Arabic$', 'cp1256'),
|
|
16
|
-
('Czech_Cesky-UTF8', 'cp1250'), # yeah
|
|
17
|
-
('.*-Cyrillic$', 'cyrillic'),
|
|
18
|
-
('.*-SJIS$', 'SJIS'),
|
|
19
|
-
('.*-GB2312$', 'GB2312'),
|
|
20
|
-
('.*-Latin2$', 'ISO-8859-2'),
|
|
21
|
-
('.*-Greek$', 'greek'),
|
|
22
|
-
('.*-UTF8$', 'utf-8'),
|
|
23
|
-
|
|
24
|
-
('Hungarian_Magyar-Unicode', 'utf-16-le'),
|
|
25
|
-
('Amahuaca', 'latin1'),
|
|
26
|
-
('Turkish_Turkce-Turkish', 'latin5'),
|
|
27
|
-
('Lithuanian_Lietuviskai-Baltic', 'latin4'),
|
|
28
|
-
('Japanese_Nihongo-EUC', 'EUC-JP'),
|
|
29
|
-
('Japanese_Nihongo-JIS', 'iso2022_jp'),
|
|
30
|
-
('Chinese_Mandarin-HZ', 'hz'),
|
|
31
|
-
('Abkhaz\-Cyrillic\+Abkh', 'cp1251'),
|
|
32
|
-
]
|
|
33
|
-
|
|
34
|
-
SKIP = set([
|
|
35
|
-
# The following files are not fully decodable because they
|
|
36
|
-
# were truncated at wrong bytes:
|
|
37
|
-
'Burmese_Myanmar-UTF8',
|
|
38
|
-
'Japanese_Nihongo-JIS',
|
|
39
|
-
'Chinese_Mandarin-HZ',
|
|
40
|
-
'Chinese_Mandarin-UTF8',
|
|
41
|
-
'Gujarati-UTF8',
|
|
42
|
-
'Hungarian_Magyar-Unicode',
|
|
43
|
-
'Lao-UTF8',
|
|
44
|
-
'Magahi-UTF8',
|
|
45
|
-
'Marathi-UTF8',
|
|
46
|
-
'Tamil-UTF8',
|
|
47
|
-
|
|
48
|
-
# Unfortunately, encodings required for reading
|
|
49
|
-
# the following files are not supported by Python:
|
|
50
|
-
'Vietnamese-VPS',
|
|
51
|
-
'Vietnamese-VIQR',
|
|
52
|
-
'Vietnamese-TCVN',
|
|
53
|
-
'Magahi-Agra',
|
|
54
|
-
'Bhojpuri-Agra',
|
|
55
|
-
'Esperanto-T61', # latin3 raises an exception
|
|
56
|
-
|
|
57
|
-
# The following files are encoded for specific fonts:
|
|
58
|
-
'Burmese_Myanmar-WinResearcher',
|
|
59
|
-
'Armenian-DallakHelv',
|
|
60
|
-
'Tigrinya_Tigrigna-VG2Main',
|
|
61
|
-
'Amharic-Afenegus6..60375', # ?
|
|
62
|
-
'Navaho_Dine-Navajo-Navaho-font',
|
|
63
|
-
|
|
64
|
-
# What are these?
|
|
65
|
-
'Azeri_Azerbaijani_Cyrillic-Az.Times.Cyr.Normal0117',
|
|
66
|
-
'Azeri_Azerbaijani_Latin-Az.Times.Lat0117',
|
|
67
|
-
|
|
68
|
-
# The following files are unintended:
|
|
69
|
-
'Czech-Latin2-err',
|
|
70
|
-
'Russian_Russky-UTF8~',
|
|
71
|
-
])
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def __init__(self, root='udhr'):
|
|
75
|
-
fileids = find_corpus_fileids(root, r'(?!README|\.).*')
|
|
76
|
-
super(UdhrCorpusReader, self).__init__(
|
|
77
|
-
root,
|
|
78
|
-
[fileid for fileid in fileids if fileid not in self.SKIP],
|
|
79
|
-
encoding=self.ENCODINGS
|
|
80
|
-
)
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
UDHR corpus reader. It mostly deals with encodings.
|
|
4
|
+
"""
|
|
5
|
+
from __future__ import absolute_import, unicode_literals
|
|
6
|
+
|
|
7
|
+
from nltk.corpus.reader.util import find_corpus_fileids
|
|
8
|
+
from nltk.corpus.reader.plaintext import PlaintextCorpusReader
|
|
9
|
+
|
|
10
|
+
class UdhrCorpusReader(PlaintextCorpusReader):
|
|
11
|
+
|
|
12
|
+
ENCODINGS = [
|
|
13
|
+
('.*-Latin1$', 'latin-1'),
|
|
14
|
+
('.*-Hebrew$', 'hebrew'),
|
|
15
|
+
('.*-Arabic$', 'cp1256'),
|
|
16
|
+
('Czech_Cesky-UTF8', 'cp1250'), # yeah
|
|
17
|
+
('.*-Cyrillic$', 'cyrillic'),
|
|
18
|
+
('.*-SJIS$', 'SJIS'),
|
|
19
|
+
('.*-GB2312$', 'GB2312'),
|
|
20
|
+
('.*-Latin2$', 'ISO-8859-2'),
|
|
21
|
+
('.*-Greek$', 'greek'),
|
|
22
|
+
('.*-UTF8$', 'utf-8'),
|
|
23
|
+
|
|
24
|
+
('Hungarian_Magyar-Unicode', 'utf-16-le'),
|
|
25
|
+
('Amahuaca', 'latin1'),
|
|
26
|
+
('Turkish_Turkce-Turkish', 'latin5'),
|
|
27
|
+
('Lithuanian_Lietuviskai-Baltic', 'latin4'),
|
|
28
|
+
('Japanese_Nihongo-EUC', 'EUC-JP'),
|
|
29
|
+
('Japanese_Nihongo-JIS', 'iso2022_jp'),
|
|
30
|
+
('Chinese_Mandarin-HZ', 'hz'),
|
|
31
|
+
('Abkhaz\-Cyrillic\+Abkh', 'cp1251'),
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
SKIP = set([
|
|
35
|
+
# The following files are not fully decodable because they
|
|
36
|
+
# were truncated at wrong bytes:
|
|
37
|
+
'Burmese_Myanmar-UTF8',
|
|
38
|
+
'Japanese_Nihongo-JIS',
|
|
39
|
+
'Chinese_Mandarin-HZ',
|
|
40
|
+
'Chinese_Mandarin-UTF8',
|
|
41
|
+
'Gujarati-UTF8',
|
|
42
|
+
'Hungarian_Magyar-Unicode',
|
|
43
|
+
'Lao-UTF8',
|
|
44
|
+
'Magahi-UTF8',
|
|
45
|
+
'Marathi-UTF8',
|
|
46
|
+
'Tamil-UTF8',
|
|
47
|
+
|
|
48
|
+
# Unfortunately, encodings required for reading
|
|
49
|
+
# the following files are not supported by Python:
|
|
50
|
+
'Vietnamese-VPS',
|
|
51
|
+
'Vietnamese-VIQR',
|
|
52
|
+
'Vietnamese-TCVN',
|
|
53
|
+
'Magahi-Agra',
|
|
54
|
+
'Bhojpuri-Agra',
|
|
55
|
+
'Esperanto-T61', # latin3 raises an exception
|
|
56
|
+
|
|
57
|
+
# The following files are encoded for specific fonts:
|
|
58
|
+
'Burmese_Myanmar-WinResearcher',
|
|
59
|
+
'Armenian-DallakHelv',
|
|
60
|
+
'Tigrinya_Tigrigna-VG2Main',
|
|
61
|
+
'Amharic-Afenegus6..60375', # ?
|
|
62
|
+
'Navaho_Dine-Navajo-Navaho-font',
|
|
63
|
+
|
|
64
|
+
# What are these?
|
|
65
|
+
'Azeri_Azerbaijani_Cyrillic-Az.Times.Cyr.Normal0117',
|
|
66
|
+
'Azeri_Azerbaijani_Latin-Az.Times.Lat0117',
|
|
67
|
+
|
|
68
|
+
# The following files are unintended:
|
|
69
|
+
'Czech-Latin2-err',
|
|
70
|
+
'Russian_Russky-UTF8~',
|
|
71
|
+
])
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def __init__(self, root='udhr'):
|
|
75
|
+
fileids = find_corpus_fileids(root, r'(?!README|\.).*')
|
|
76
|
+
super(UdhrCorpusReader, self).__init__(
|
|
77
|
+
root,
|
|
78
|
+
[fileid for fileid in fileids if fileid not in self.SKIP],
|
|
79
|
+
encoding=self.ENCODINGS
|
|
80
|
+
)
|