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,124 +1,124 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
The following test performs a random series of reads, seeks, and
|
|
4
|
-
tells, and checks that the results are consistent.
|
|
5
|
-
"""
|
|
6
|
-
from __future__ import absolute_import, unicode_literals
|
|
7
|
-
import random
|
|
8
|
-
import functools
|
|
9
|
-
from io import BytesIO
|
|
10
|
-
from nltk.corpus.reader import SeekableUnicodeStreamReader
|
|
11
|
-
|
|
12
|
-
def check_reader(unicode_string, encoding, n=1000):
|
|
13
|
-
bytestr = unicode_string.encode(encoding)
|
|
14
|
-
strlen = len(unicode_string)
|
|
15
|
-
stream = BytesIO(bytestr)
|
|
16
|
-
reader = SeekableUnicodeStreamReader(stream, encoding)
|
|
17
|
-
# Find all character positions
|
|
18
|
-
chars = []
|
|
19
|
-
while True:
|
|
20
|
-
pos = reader.tell()
|
|
21
|
-
chars.append( (pos, reader.read(1)) )
|
|
22
|
-
if chars[-1][1] == '': break
|
|
23
|
-
# Find all strings
|
|
24
|
-
strings = dict( (pos,'') for (pos,c) in chars )
|
|
25
|
-
for pos1, char in chars:
|
|
26
|
-
for pos2, _ in chars:
|
|
27
|
-
if pos2 <= pos1:
|
|
28
|
-
strings[pos2] += char
|
|
29
|
-
while True:
|
|
30
|
-
op = random.choice('tsrr')
|
|
31
|
-
# Check our position?
|
|
32
|
-
if op == 't': # tell
|
|
33
|
-
reader.tell()
|
|
34
|
-
# Perform a seek?
|
|
35
|
-
if op == 's': # seek
|
|
36
|
-
new_pos = random.choice([p for (p,c) in chars])
|
|
37
|
-
reader.seek(new_pos)
|
|
38
|
-
# Perform a read?
|
|
39
|
-
if op == 'r': # read
|
|
40
|
-
if random.random() < .3: pos = reader.tell()
|
|
41
|
-
else: pos = None
|
|
42
|
-
if random.random() < .2: size = None
|
|
43
|
-
elif random.random() < .8:
|
|
44
|
-
size = random.randint(0, int(strlen/6))
|
|
45
|
-
else: size = random.randint(0, strlen+20)
|
|
46
|
-
if random.random() < .8:
|
|
47
|
-
s = reader.read(size)
|
|
48
|
-
else:
|
|
49
|
-
s = reader.readline(size)
|
|
50
|
-
# check that everything's consistent
|
|
51
|
-
if pos is not None:
|
|
52
|
-
assert pos in strings
|
|
53
|
-
assert strings[pos].startswith(s)
|
|
54
|
-
n -= 1
|
|
55
|
-
if n == 0:
|
|
56
|
-
return 'passed'
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
#Call the randomized test function `check_reader` with a variety of
|
|
60
|
-
#input strings and encodings.
|
|
61
|
-
|
|
62
|
-
ENCODINGS = ['ascii', 'latin1', 'greek', 'hebrew', 'utf-16', 'utf-8']
|
|
63
|
-
|
|
64
|
-
STRINGS = [
|
|
65
|
-
"""
|
|
66
|
-
This is a test file.
|
|
67
|
-
It is fairly short.
|
|
68
|
-
""",
|
|
69
|
-
|
|
70
|
-
"This file can be encoded with latin1. \x83",
|
|
71
|
-
|
|
72
|
-
"""\
|
|
73
|
-
This is a test file.
|
|
74
|
-
Here's a blank line:
|
|
75
|
-
|
|
76
|
-
And here's some unicode: \xee \u0123 \uffe3
|
|
77
|
-
""",
|
|
78
|
-
|
|
79
|
-
"""\
|
|
80
|
-
This is a test file.
|
|
81
|
-
Unicode characters: \xf3 \u2222 \u3333\u4444 \u5555
|
|
82
|
-
""",
|
|
83
|
-
|
|
84
|
-
]
|
|
85
|
-
|
|
86
|
-
def test_reader():
|
|
87
|
-
for string in STRINGS:
|
|
88
|
-
for encoding in ENCODINGS:
|
|
89
|
-
try:
|
|
90
|
-
# skip strings that can't be encoded with the current encoding
|
|
91
|
-
string.encode(encoding)
|
|
92
|
-
yield check_reader, string, encoding
|
|
93
|
-
except UnicodeEncodeError:
|
|
94
|
-
pass
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
# nose shows the whole string arguments in a verbose mode; this is annoying,
|
|
99
|
-
# so large string test is separated.
|
|
100
|
-
|
|
101
|
-
LARGE_STRING = """\
|
|
102
|
-
This is a larger file. It has some lines that are longer \
|
|
103
|
-
than 72 characters. It's got lots of repetition. Here's \
|
|
104
|
-
some unicode chars: \xee \u0123 \uffe3 \ueeee \u2345
|
|
105
|
-
|
|
106
|
-
How fun! Let's repeat it twenty times.
|
|
107
|
-
"""*10
|
|
108
|
-
|
|
109
|
-
def test_reader_on_large_string():
|
|
110
|
-
for encoding in ENCODINGS:
|
|
111
|
-
try:
|
|
112
|
-
# skip strings that can't be encoded with the current encoding
|
|
113
|
-
LARGE_STRING.encode(encoding)
|
|
114
|
-
def _check(encoding, n=1000):
|
|
115
|
-
check_reader(LARGE_STRING, encoding, n)
|
|
116
|
-
|
|
117
|
-
yield _check, encoding
|
|
118
|
-
|
|
119
|
-
except UnicodeEncodeError:
|
|
120
|
-
pass
|
|
121
|
-
|
|
122
|
-
def teardown_module(module=None):
|
|
123
|
-
import gc
|
|
124
|
-
gc.collect()
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
The following test performs a random series of reads, seeks, and
|
|
4
|
+
tells, and checks that the results are consistent.
|
|
5
|
+
"""
|
|
6
|
+
from __future__ import absolute_import, unicode_literals
|
|
7
|
+
import random
|
|
8
|
+
import functools
|
|
9
|
+
from io import BytesIO
|
|
10
|
+
from nltk.corpus.reader import SeekableUnicodeStreamReader
|
|
11
|
+
|
|
12
|
+
def check_reader(unicode_string, encoding, n=1000):
|
|
13
|
+
bytestr = unicode_string.encode(encoding)
|
|
14
|
+
strlen = len(unicode_string)
|
|
15
|
+
stream = BytesIO(bytestr)
|
|
16
|
+
reader = SeekableUnicodeStreamReader(stream, encoding)
|
|
17
|
+
# Find all character positions
|
|
18
|
+
chars = []
|
|
19
|
+
while True:
|
|
20
|
+
pos = reader.tell()
|
|
21
|
+
chars.append( (pos, reader.read(1)) )
|
|
22
|
+
if chars[-1][1] == '': break
|
|
23
|
+
# Find all strings
|
|
24
|
+
strings = dict( (pos,'') for (pos,c) in chars )
|
|
25
|
+
for pos1, char in chars:
|
|
26
|
+
for pos2, _ in chars:
|
|
27
|
+
if pos2 <= pos1:
|
|
28
|
+
strings[pos2] += char
|
|
29
|
+
while True:
|
|
30
|
+
op = random.choice('tsrr')
|
|
31
|
+
# Check our position?
|
|
32
|
+
if op == 't': # tell
|
|
33
|
+
reader.tell()
|
|
34
|
+
# Perform a seek?
|
|
35
|
+
if op == 's': # seek
|
|
36
|
+
new_pos = random.choice([p for (p,c) in chars])
|
|
37
|
+
reader.seek(new_pos)
|
|
38
|
+
# Perform a read?
|
|
39
|
+
if op == 'r': # read
|
|
40
|
+
if random.random() < .3: pos = reader.tell()
|
|
41
|
+
else: pos = None
|
|
42
|
+
if random.random() < .2: size = None
|
|
43
|
+
elif random.random() < .8:
|
|
44
|
+
size = random.randint(0, int(strlen/6))
|
|
45
|
+
else: size = random.randint(0, strlen+20)
|
|
46
|
+
if random.random() < .8:
|
|
47
|
+
s = reader.read(size)
|
|
48
|
+
else:
|
|
49
|
+
s = reader.readline(size)
|
|
50
|
+
# check that everything's consistent
|
|
51
|
+
if pos is not None:
|
|
52
|
+
assert pos in strings
|
|
53
|
+
assert strings[pos].startswith(s)
|
|
54
|
+
n -= 1
|
|
55
|
+
if n == 0:
|
|
56
|
+
return 'passed'
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
#Call the randomized test function `check_reader` with a variety of
|
|
60
|
+
#input strings and encodings.
|
|
61
|
+
|
|
62
|
+
ENCODINGS = ['ascii', 'latin1', 'greek', 'hebrew', 'utf-16', 'utf-8']
|
|
63
|
+
|
|
64
|
+
STRINGS = [
|
|
65
|
+
"""
|
|
66
|
+
This is a test file.
|
|
67
|
+
It is fairly short.
|
|
68
|
+
""",
|
|
69
|
+
|
|
70
|
+
"This file can be encoded with latin1. \x83",
|
|
71
|
+
|
|
72
|
+
"""\
|
|
73
|
+
This is a test file.
|
|
74
|
+
Here's a blank line:
|
|
75
|
+
|
|
76
|
+
And here's some unicode: \xee \u0123 \uffe3
|
|
77
|
+
""",
|
|
78
|
+
|
|
79
|
+
"""\
|
|
80
|
+
This is a test file.
|
|
81
|
+
Unicode characters: \xf3 \u2222 \u3333\u4444 \u5555
|
|
82
|
+
""",
|
|
83
|
+
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
def test_reader():
|
|
87
|
+
for string in STRINGS:
|
|
88
|
+
for encoding in ENCODINGS:
|
|
89
|
+
try:
|
|
90
|
+
# skip strings that can't be encoded with the current encoding
|
|
91
|
+
string.encode(encoding)
|
|
92
|
+
yield check_reader, string, encoding
|
|
93
|
+
except UnicodeEncodeError:
|
|
94
|
+
pass
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
# nose shows the whole string arguments in a verbose mode; this is annoying,
|
|
99
|
+
# so large string test is separated.
|
|
100
|
+
|
|
101
|
+
LARGE_STRING = """\
|
|
102
|
+
This is a larger file. It has some lines that are longer \
|
|
103
|
+
than 72 characters. It's got lots of repetition. Here's \
|
|
104
|
+
some unicode chars: \xee \u0123 \uffe3 \ueeee \u2345
|
|
105
|
+
|
|
106
|
+
How fun! Let's repeat it twenty times.
|
|
107
|
+
"""*10
|
|
108
|
+
|
|
109
|
+
def test_reader_on_large_string():
|
|
110
|
+
for encoding in ENCODINGS:
|
|
111
|
+
try:
|
|
112
|
+
# skip strings that can't be encoded with the current encoding
|
|
113
|
+
LARGE_STRING.encode(encoding)
|
|
114
|
+
def _check(encoding, n=1000):
|
|
115
|
+
check_reader(LARGE_STRING, encoding, n)
|
|
116
|
+
|
|
117
|
+
yield _check, encoding
|
|
118
|
+
|
|
119
|
+
except UnicodeEncodeError:
|
|
120
|
+
pass
|
|
121
|
+
|
|
122
|
+
def teardown_module(module=None):
|
|
123
|
+
import gc
|
|
124
|
+
gc.collect()
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
Unit tests for Senna
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import unicode_literals
|
|
7
|
+
from os import environ, path, sep
|
|
8
|
+
|
|
9
|
+
import logging
|
|
10
|
+
import unittest
|
|
11
|
+
|
|
12
|
+
from nltk.classify import Senna
|
|
13
|
+
from nltk.tag import SennaTagger, SennaChunkTagger, SennaNERTagger
|
|
14
|
+
|
|
15
|
+
# Set Senna executable path for tests if it is not specified as an environment variable
|
|
16
|
+
if 'SENNA' in environ:
|
|
17
|
+
SENNA_EXECUTABLE_PATH = path.normpath(environ['SENNA']) + sep
|
|
18
|
+
else:
|
|
19
|
+
SENNA_EXECUTABLE_PATH = '/usr/share/senna-v3.0'
|
|
20
|
+
|
|
21
|
+
senna_is_installed = path.exists(SENNA_EXECUTABLE_PATH)
|
|
22
|
+
|
|
23
|
+
@unittest.skipUnless(senna_is_installed, "Requires Senna executable")
|
|
24
|
+
class TestSennaPipeline(unittest.TestCase):
|
|
25
|
+
"""Unittest for nltk.classify.senna"""
|
|
26
|
+
|
|
27
|
+
def test_senna_pipeline(self):
|
|
28
|
+
"""Senna pipeline interface"""
|
|
29
|
+
|
|
30
|
+
pipeline = Senna(SENNA_EXECUTABLE_PATH, ['pos', 'chk', 'ner'])
|
|
31
|
+
sent = 'Dusseldorf is an international business center'.split()
|
|
32
|
+
result = [(token['word'], token['chk'], token['ner'], token['pos']) for token in pipeline.tag(sent)]
|
|
33
|
+
expected = [('Dusseldorf', 'B-NP', 'B-LOC', 'NNP'), ('is', 'B-VP',
|
|
34
|
+
'O', 'VBZ'), ('an', 'B-NP', 'O', 'DT'), ('international', 'I-NP',
|
|
35
|
+
'O', 'JJ'), ('business', 'I-NP', 'O', 'NN'), ('center', 'I-NP',
|
|
36
|
+
'O', 'NN')]
|
|
37
|
+
self.assertEqual(result, expected)
|
|
38
|
+
|
|
39
|
+
@unittest.skipUnless(senna_is_installed, "Requires Senna executable")
|
|
40
|
+
class TestSennaTagger(unittest.TestCase):
|
|
41
|
+
"""Unittest for nltk.tag.senna"""
|
|
42
|
+
|
|
43
|
+
def test_senna_tagger(self):
|
|
44
|
+
tagger = SennaTagger(SENNA_EXECUTABLE_PATH)
|
|
45
|
+
result = tagger.tag('What is the airspeed of an unladen swallow ?'.split())
|
|
46
|
+
expected = [('What', 'WP'), ('is', 'VBZ'), ('the', 'DT'), ('airspeed',
|
|
47
|
+
'NN'),('of', 'IN'), ('an', 'DT'), ('unladen', 'NN'), ('swallow',
|
|
48
|
+
'NN'), ('?', '.')]
|
|
49
|
+
self.assertEqual(result, expected)
|
|
50
|
+
|
|
51
|
+
def test_senna_chunk_tagger(self):
|
|
52
|
+
chktagger = SennaChunkTagger(SENNA_EXECUTABLE_PATH)
|
|
53
|
+
result_1 = chktagger.tag('What is the airspeed of an unladen swallow ?'.split())
|
|
54
|
+
expected_1 = [('What', 'B-NP'), ('is', 'B-VP'), ('the', 'B-NP'), ('airspeed',
|
|
55
|
+
'I-NP'), ('of', 'B-PP'), ('an', 'B-NP'), ('unladen', 'I-NP'), ('swallow',
|
|
56
|
+
'I-NP'), ('?', 'O')]
|
|
57
|
+
|
|
58
|
+
result_2 = list(chktagger.bio_to_chunks(result_1, chunk_type='NP'))
|
|
59
|
+
expected_2 = [('What', '0'), ('the airspeed', '2-3'), ('an unladen swallow',
|
|
60
|
+
'5-6-7')]
|
|
61
|
+
self.assertEqual(result_1, expected_1)
|
|
62
|
+
self.assertEqual(result_2, expected_2)
|
|
63
|
+
|
|
64
|
+
def test_senna_ner_tagger(self):
|
|
65
|
+
nertagger = SennaNERTagger(SENNA_EXECUTABLE_PATH)
|
|
66
|
+
result_1 = nertagger.tag('Shakespeare theatre was in London .'.split())
|
|
67
|
+
expected_1 = [('Shakespeare', 'B-PER'), ('theatre', 'O'), ('was', 'O'),
|
|
68
|
+
('in', 'O'), ('London', 'B-LOC'), ('.', 'O')]
|
|
69
|
+
|
|
70
|
+
result_2 = nertagger.tag('UN headquarters are in NY , USA .'.split())
|
|
71
|
+
expected_2 = [('UN', 'B-ORG'), ('headquarters', 'O'), ('are', 'O'),
|
|
72
|
+
('in', 'O'), ('NY', 'B-LOC'), (',', 'O'), ('USA', 'B-LOC'), ('.', 'O')]
|
|
73
|
+
self.assertEqual(result_1, expected_1)
|
|
74
|
+
self.assertEqual(result_2, expected_2)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
from __future__ import print_function, unicode_literals
|
|
3
|
+
import unittest
|
|
4
|
+
from contextlib import closing
|
|
5
|
+
from nltk import data
|
|
6
|
+
from nltk.stem.snowball import SnowballStemmer
|
|
7
|
+
from nltk.stem.porter import PorterStemmer
|
|
8
|
+
import os
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SnowballTest(unittest.TestCase):
|
|
12
|
+
|
|
13
|
+
def test_arabic(self):
|
|
14
|
+
"""
|
|
15
|
+
this unit testing for test the snowball arabic light stemmer
|
|
16
|
+
this stemmer deals with prefixes and suffixes
|
|
17
|
+
"""
|
|
18
|
+
ar_stemmer = SnowballStemmer("arabic")
|
|
19
|
+
assert ar_stemmer.stem('الْعَرَبِــــــيَّة') == "عرب"
|
|
20
|
+
assert ar_stemmer.stem("العربية") == "عرب"
|
|
21
|
+
assert ar_stemmer.stem("فقالوا") == "قال"
|
|
22
|
+
assert ar_stemmer.stem("الطالبات") == "طالب"
|
|
23
|
+
assert ar_stemmer.stem("فالطالبات") == "طالب"
|
|
24
|
+
assert ar_stemmer.stem("والطالبات") == "طالب"
|
|
25
|
+
assert ar_stemmer.stem("الطالبون") == "طالب"
|
|
26
|
+
|
|
27
|
+
def test_russian(self):
|
|
28
|
+
# Russian words both consisting of Cyrillic
|
|
29
|
+
# and Roman letters can be stemmed.
|
|
30
|
+
stemmer_russian = SnowballStemmer("russian")
|
|
31
|
+
assert stemmer_russian.stem("авантненькая") == "авантненьк"
|
|
32
|
+
assert stemmer_russian.stem("avenantnen'kai^a") == "avenantnen'k"
|
|
33
|
+
|
|
34
|
+
def test_german(self):
|
|
35
|
+
stemmer_german = SnowballStemmer("german")
|
|
36
|
+
stemmer_german2 = SnowballStemmer("german", ignore_stopwords=True)
|
|
37
|
+
|
|
38
|
+
assert stemmer_german.stem("Schr\xe4nke") == 'schrank'
|
|
39
|
+
assert stemmer_german2.stem("Schr\xe4nke") == 'schrank'
|
|
40
|
+
|
|
41
|
+
assert stemmer_german.stem("keinen") == 'kein'
|
|
42
|
+
assert stemmer_german2.stem("keinen") == 'keinen'
|
|
43
|
+
|
|
44
|
+
def test_spanish(self):
|
|
45
|
+
stemmer = SnowballStemmer('spanish')
|
|
46
|
+
|
|
47
|
+
assert stemmer.stem("Visionado") == 'vision'
|
|
48
|
+
|
|
49
|
+
# The word 'algue' was raising an IndexError
|
|
50
|
+
assert stemmer.stem("algue") == 'algu'
|
|
51
|
+
|
|
52
|
+
def test_short_strings_bug(self):
|
|
53
|
+
stemmer = SnowballStemmer('english')
|
|
54
|
+
assert stemmer.stem("y's") == 'y'
|
|
55
|
+
|
|
56
|
+
class PorterTest(unittest.TestCase):
|
|
57
|
+
|
|
58
|
+
def _vocabulary(self):
|
|
59
|
+
with closing(data.find('stemmers/porter_test/porter_vocabulary.txt').open(encoding='utf-8')) as fp:
|
|
60
|
+
return fp.read().splitlines()
|
|
61
|
+
|
|
62
|
+
def _test_against_expected_output(self, stemmer_mode, expected_stems):
|
|
63
|
+
stemmer = PorterStemmer(mode=stemmer_mode)
|
|
64
|
+
for word, true_stem in zip(self._vocabulary(), expected_stems):
|
|
65
|
+
our_stem = stemmer.stem(word)
|
|
66
|
+
assert our_stem == true_stem, (
|
|
67
|
+
"%s should stem to %s in %s mode but got %s" % (
|
|
68
|
+
word, true_stem, stemmer_mode, our_stem
|
|
69
|
+
)
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
def test_vocabulary_martin_mode(self):
|
|
73
|
+
"""Tests all words from the test vocabulary provided by M Porter
|
|
74
|
+
|
|
75
|
+
The sample vocabulary and output were sourced from:
|
|
76
|
+
http://tartarus.org/martin/PorterStemmer/voc.txt
|
|
77
|
+
http://tartarus.org/martin/PorterStemmer/output.txt
|
|
78
|
+
and are linked to from the Porter Stemmer algorithm's homepage
|
|
79
|
+
at
|
|
80
|
+
http://tartarus.org/martin/PorterStemmer/
|
|
81
|
+
"""
|
|
82
|
+
with closing(data.find('stemmers/porter_test/porter_martin_output.txt').open(encoding='utf-8')) as fp:
|
|
83
|
+
self._test_against_expected_output(
|
|
84
|
+
PorterStemmer.MARTIN_EXTENSIONS,
|
|
85
|
+
fp.read().splitlines()
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
def test_vocabulary_nltk_mode(self):
|
|
89
|
+
with closing(data.find('stemmers/porter_test/porter_nltk_output.txt').open(encoding='utf-8')) as fp:
|
|
90
|
+
self._test_against_expected_output(
|
|
91
|
+
PorterStemmer.NLTK_EXTENSIONS,
|
|
92
|
+
fp.read().splitlines()
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
def test_vocabulary_original_mode(self):
|
|
96
|
+
# The list of stems for this test was generated by taking the
|
|
97
|
+
# Martin-blessed stemmer from
|
|
98
|
+
# http://tartarus.org/martin/PorterStemmer/c.txt
|
|
99
|
+
# and removing all the --DEPARTURE-- sections from it and
|
|
100
|
+
# running it against Martin's test vocabulary.
|
|
101
|
+
|
|
102
|
+
with closing(data.find('stemmers/porter_test/porter_original_output.txt').open(encoding='utf-8')) as fp:
|
|
103
|
+
self._test_against_expected_output(
|
|
104
|
+
PorterStemmer.ORIGINAL_ALGORITHM,
|
|
105
|
+
fp.read().splitlines()
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
self._test_against_expected_output(
|
|
109
|
+
PorterStemmer.ORIGINAL_ALGORITHM,
|
|
110
|
+
data.find('stemmers/porter_test/porter_original_output.txt')
|
|
111
|
+
.open(encoding='utf-8')
|
|
112
|
+
.read()
|
|
113
|
+
.splitlines()
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def test_oed_bug(self):
|
|
117
|
+
"""Test for bug https://github.com/nltk/nltk/issues/1581
|
|
118
|
+
|
|
119
|
+
Ensures that 'oed' can be stemmed without throwing an error.
|
|
120
|
+
"""
|
|
121
|
+
assert PorterStemmer().stem('oed') == 'o'
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
from __future__ import absolute_import, unicode_literals
|
|
3
|
-
|
|
4
|
-
def test_basic():
|
|
5
|
-
from nltk.tag import pos_tag
|
|
6
|
-
from nltk.tokenize import word_tokenize
|
|
7
|
-
|
|
8
|
-
result = pos_tag(word_tokenize("John's big idea isn't all that bad."))
|
|
9
|
-
assert result == [('John', 'NNP'), ("'s", 'POS'), ('big', 'JJ'),
|
|
10
|
-
('idea', 'NN'), ('is', 'VBZ'), ("n't", 'RB'),
|
|
11
|
-
('all', 'PDT'), ('that', 'DT'), ('bad', 'JJ'),
|
|
12
|
-
('.', '.')]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def setup_module(module):
|
|
16
|
-
from nose import SkipTest
|
|
17
|
-
try:
|
|
18
|
-
import numpy
|
|
19
|
-
except ImportError:
|
|
20
|
-
raise SkipTest("numpy is required for nltk.test.test_tag")
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
from __future__ import absolute_import, unicode_literals
|
|
3
|
+
|
|
4
|
+
def test_basic():
|
|
5
|
+
from nltk.tag import pos_tag
|
|
6
|
+
from nltk.tokenize import word_tokenize
|
|
7
|
+
|
|
8
|
+
result = pos_tag(word_tokenize("John's big idea isn't all that bad."))
|
|
9
|
+
assert result == [('John', 'NNP'), ("'s", 'POS'), ('big', 'JJ'),
|
|
10
|
+
('idea', 'NN'), ('is', 'VBZ'), ("n't", 'RB'),
|
|
11
|
+
('all', 'PDT'), ('that', 'DT'), ('bad', 'JJ'),
|
|
12
|
+
('.', '.')]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def setup_module(module):
|
|
16
|
+
from nose import SkipTest
|
|
17
|
+
try:
|
|
18
|
+
import numpy
|
|
19
|
+
except ImportError:
|
|
20
|
+
raise SkipTest("numpy is required for nltk.test.test_tag")
|