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,307 +1,307 @@
|
|
|
1
|
-
.. Copyright (C) 2001-
|
|
2
|
-
.. For license information, see LICENSE.TXT
|
|
3
|
-
|
|
4
|
-
===============================
|
|
5
|
-
Unit test cases for ``toolbox``
|
|
6
|
-
===============================
|
|
7
|
-
|
|
8
|
-
>>> from nltk import toolbox
|
|
9
|
-
|
|
10
|
-
--------------------------
|
|
11
|
-
``toolbox.StandardFormat``
|
|
12
|
-
--------------------------
|
|
13
|
-
|
|
14
|
-
>>> f = toolbox.StandardFormat()
|
|
15
|
-
|
|
16
|
-
``toolbox.StandardFormat.open()``
|
|
17
|
-
---------------------------------
|
|
18
|
-
>>> import os, tempfile
|
|
19
|
-
>>> (fd, fname) = tempfile.mkstemp()
|
|
20
|
-
>>> tf = os.fdopen(fd, "w")
|
|
21
|
-
>>> _ = tf.write('\\lx a value\n\\lx another value\n')
|
|
22
|
-
>>> tf.close()
|
|
23
|
-
>>> f = toolbox.StandardFormat()
|
|
24
|
-
>>> f.open(fname)
|
|
25
|
-
>>> list(f.fields())
|
|
26
|
-
[('lx', 'a value'), ('lx', 'another value')]
|
|
27
|
-
>>> f.close()
|
|
28
|
-
>>> os.unlink(fname)
|
|
29
|
-
|
|
30
|
-
``toolbox.StandardFormat.open_string()``
|
|
31
|
-
----------------------------------------
|
|
32
|
-
>>> f = toolbox.StandardFormat()
|
|
33
|
-
>>> f.open_string('\\lx a value\n\\lx another value\n')
|
|
34
|
-
>>> list(f.fields())
|
|
35
|
-
[('lx', 'a value'), ('lx', 'another value')]
|
|
36
|
-
>>> f.close()
|
|
37
|
-
|
|
38
|
-
``toolbox.StandardFormat.close()``
|
|
39
|
-
----------------------------------
|
|
40
|
-
>>> f = toolbox.StandardFormat()
|
|
41
|
-
>>> f.open_string('\\lx a value\n\\lx another value\n')
|
|
42
|
-
>>> list(f.fields())
|
|
43
|
-
[('lx', 'a value'), ('lx', 'another value')]
|
|
44
|
-
>>> f.close()
|
|
45
|
-
|
|
46
|
-
``toolbox.StandardFormat.line_num``
|
|
47
|
-
---------------------------------------
|
|
48
|
-
|
|
49
|
-
``StandardFormat.line_num`` contains the line number of the last line returned:
|
|
50
|
-
|
|
51
|
-
>>> f = toolbox.StandardFormat()
|
|
52
|
-
>>> f.open_string('\\lx a value\n\\lx another value\n\\lx a third value\n')
|
|
53
|
-
>>> line_nums = []
|
|
54
|
-
>>> for l in f.raw_fields():
|
|
55
|
-
... line_nums.append(f.line_num)
|
|
56
|
-
>>> line_nums
|
|
57
|
-
[1, 2, 3]
|
|
58
|
-
|
|
59
|
-
``StandardFormat.line_num`` contains the line number of the last line returned:
|
|
60
|
-
|
|
61
|
-
>>> f = toolbox.StandardFormat()
|
|
62
|
-
>>> f.open_string('\\lx two\nlines\n\\lx three\nlines\n\n\\lx two\nlines\n')
|
|
63
|
-
>>> line_nums = []
|
|
64
|
-
>>> for l in f.raw_fields():
|
|
65
|
-
... line_nums.append(f.line_num)
|
|
66
|
-
>>> line_nums
|
|
67
|
-
[2, 5, 7]
|
|
68
|
-
|
|
69
|
-
``StandardFormat.line_num`` doesn't exist before openning or after closing
|
|
70
|
-
a file or string:
|
|
71
|
-
|
|
72
|
-
>>> f = toolbox.StandardFormat()
|
|
73
|
-
>>> f.line_num
|
|
74
|
-
Traceback (most recent call last):
|
|
75
|
-
...
|
|
76
|
-
AttributeError: 'StandardFormat' object has no attribute 'line_num'
|
|
77
|
-
>>> f.open_string('\\lx two\nlines\n\\lx three\nlines\n\n\\lx two\nlines\n')
|
|
78
|
-
>>> line_nums = []
|
|
79
|
-
>>> for l in f.raw_fields():
|
|
80
|
-
... line_nums.append(f.line_num)
|
|
81
|
-
>>> line_nums
|
|
82
|
-
[2, 5, 7]
|
|
83
|
-
>>> f.close()
|
|
84
|
-
>>> f.line_num
|
|
85
|
-
Traceback (most recent call last):
|
|
86
|
-
...
|
|
87
|
-
AttributeError: 'StandardFormat' object has no attribute 'line_num'
|
|
88
|
-
|
|
89
|
-
``toolbox.StandardFormat.raw_fields()``
|
|
90
|
-
---------------------------------------
|
|
91
|
-
``raw_fields()`` returns an iterator over tuples of two strings representing the
|
|
92
|
-
marker and its value. The marker is given without the backslash and the value
|
|
93
|
-
without its trailing newline:
|
|
94
|
-
|
|
95
|
-
>>> f = toolbox.StandardFormat()
|
|
96
|
-
>>> f.open_string('\\lx a value\n\\lx another value\n')
|
|
97
|
-
>>> list(f.raw_fields())
|
|
98
|
-
[('lx', 'a value'), ('lx', 'another value')]
|
|
99
|
-
|
|
100
|
-
an empty file returns nothing:
|
|
101
|
-
|
|
102
|
-
>>> f = toolbox.StandardFormat()
|
|
103
|
-
>>> f.open_string('')
|
|
104
|
-
>>> list(f.raw_fields())
|
|
105
|
-
[]
|
|
106
|
-
|
|
107
|
-
file with only a newline returns WHAT SHOULD IT RETURN???:
|
|
108
|
-
|
|
109
|
-
>>> f = toolbox.StandardFormat()
|
|
110
|
-
>>> f.open_string('\n')
|
|
111
|
-
>>> list(f.raw_fields())
|
|
112
|
-
[(None, '')]
|
|
113
|
-
|
|
114
|
-
file with only one field should be parsed ok:
|
|
115
|
-
|
|
116
|
-
>>> f = toolbox.StandardFormat()
|
|
117
|
-
>>> f.open_string('\\lx one value\n')
|
|
118
|
-
>>> list(f.raw_fields())
|
|
119
|
-
[('lx', 'one value')]
|
|
120
|
-
|
|
121
|
-
file without a trailing newline should be parsed ok:
|
|
122
|
-
|
|
123
|
-
>>> f = toolbox.StandardFormat()
|
|
124
|
-
>>> f.open_string('\\lx a value\n\\lx another value')
|
|
125
|
-
>>> list(f.raw_fields())
|
|
126
|
-
[('lx', 'a value'), ('lx', 'another value')]
|
|
127
|
-
|
|
128
|
-
trailing white space is preserved except for the final newline:
|
|
129
|
-
|
|
130
|
-
>>> f = toolbox.StandardFormat()
|
|
131
|
-
>>> f.open_string('\\lx trailing space \n\\lx trailing tab\t\n\\lx extra newline\n\n')
|
|
132
|
-
>>> list(f.raw_fields())
|
|
133
|
-
[('lx', 'trailing space '), ('lx', 'trailing tab\t'), ('lx', 'extra newline\n')]
|
|
134
|
-
|
|
135
|
-
line wrapping is preserved:
|
|
136
|
-
|
|
137
|
-
>>> f = toolbox.StandardFormat()
|
|
138
|
-
>>> f.open_string('\\lx a value\nmore of the value\nand still more\n\\lc another val\n')
|
|
139
|
-
>>> list(f.raw_fields())
|
|
140
|
-
[('lx', 'a value\nmore of the value\nand still more'), ('lc', 'another val')]
|
|
141
|
-
|
|
142
|
-
file beginning with a multiline record should be parsed ok:
|
|
143
|
-
|
|
144
|
-
>>> f = toolbox.StandardFormat()
|
|
145
|
-
>>> f.open_string('\\lx a value\nmore of the value\nand still more\n\\lc another val\n')
|
|
146
|
-
>>> list(f.raw_fields())
|
|
147
|
-
[('lx', 'a value\nmore of the value\nand still more'), ('lc', 'another val')]
|
|
148
|
-
|
|
149
|
-
file ending with a multiline record should be parsed ok:
|
|
150
|
-
|
|
151
|
-
>>> f = toolbox.StandardFormat()
|
|
152
|
-
>>> f.open_string('\\lc a value\n\\lx another value\nmore of the value\nand still more\n')
|
|
153
|
-
>>> list(f.raw_fields())
|
|
154
|
-
[('lc', 'a value'), ('lx', 'another value\nmore of the value\nand still more')]
|
|
155
|
-
|
|
156
|
-
file beginning with a BOM should be parsed ok:
|
|
157
|
-
|
|
158
|
-
>>> f = toolbox.StandardFormat()
|
|
159
|
-
>>> f.open_string('\xef\xbb\xbf\\lx a value\n\\lx another value\n')
|
|
160
|
-
>>> list(f.raw_fields())
|
|
161
|
-
[('lx', 'a value'), ('lx', 'another value')]
|
|
162
|
-
|
|
163
|
-
file beginning with two BOMs should ignore only the first one:
|
|
164
|
-
|
|
165
|
-
>>> f = toolbox.StandardFormat()
|
|
166
|
-
>>> f.open_string('\xef\xbb\xbf\xef\xbb\xbf\\lx a value\n\\lx another value\n')
|
|
167
|
-
>>> list(f.raw_fields())
|
|
168
|
-
[(None, '\xef\xbb\xbf\\lx a value'), ('lx', 'another value')]
|
|
169
|
-
|
|
170
|
-
should not ignore a BOM not at the beginning of the file:
|
|
171
|
-
|
|
172
|
-
>>> f = toolbox.StandardFormat()
|
|
173
|
-
>>> f.open_string('\\lx a value\n\xef\xbb\xbf\\lx another value\n')
|
|
174
|
-
>>> list(f.raw_fields())
|
|
175
|
-
[('lx', 'a value\n\xef\xbb\xbf\\lx another value')]
|
|
176
|
-
|
|
177
|
-
``toolbox.StandardFormat.fields()``
|
|
178
|
-
-----------------------------------
|
|
179
|
-
trailing white space is not preserved:
|
|
180
|
-
|
|
181
|
-
>>> f = toolbox.StandardFormat()
|
|
182
|
-
>>> f.open_string('\\lx trailing space \n\\lx trailing tab\t\n\\lx extra newline\n\n')
|
|
183
|
-
>>> list(f.fields())
|
|
184
|
-
[('lx', 'trailing space'), ('lx', 'trailing tab'), ('lx', 'extra newline')]
|
|
185
|
-
|
|
186
|
-
multiline fields are unwrapped:
|
|
187
|
-
|
|
188
|
-
>>> f = toolbox.StandardFormat()
|
|
189
|
-
>>> f.open_string('\\lx a value\nmore of the value\nand still more\n\\lc another val\n')
|
|
190
|
-
>>> list(f.fields())
|
|
191
|
-
[('lx', 'a value more of the value and still more'), ('lc', 'another val')]
|
|
192
|
-
|
|
193
|
-
markers
|
|
194
|
-
-------
|
|
195
|
-
A backslash in the first position on a new line indicates the start of a
|
|
196
|
-
marker. The backslash is not part of the marker:
|
|
197
|
-
|
|
198
|
-
>>> f = toolbox.StandardFormat()
|
|
199
|
-
>>> f.open_string('\\mk a value\n')
|
|
200
|
-
>>> list(f.fields())
|
|
201
|
-
[('mk', 'a value')]
|
|
202
|
-
|
|
203
|
-
If the backslash occurs later in the line it does not indicate the start
|
|
204
|
-
of a marker:
|
|
205
|
-
|
|
206
|
-
>>> f = toolbox.StandardFormat()
|
|
207
|
-
>>> f.open_string('\\mk a value\n \\mk another one\n')
|
|
208
|
-
>>> list(f.raw_fields())
|
|
209
|
-
[('mk', 'a value\n \\mk another one')]
|
|
210
|
-
|
|
211
|
-
There is no specific limit to the length of a marker:
|
|
212
|
-
|
|
213
|
-
>>> f = toolbox.StandardFormat()
|
|
214
|
-
>>> f.open_string('\\this_is_an_extremely_long_marker value\n')
|
|
215
|
-
>>> list(f.fields())
|
|
216
|
-
[('this_is_an_extremely_long_marker', 'value')]
|
|
217
|
-
|
|
218
|
-
A marker can contain any non white space character:
|
|
219
|
-
|
|
220
|
-
>>> f = toolbox.StandardFormat()
|
|
221
|
-
>>> f.open_string('\\`~!@#$%^&*()_-=+[{]}\|,<.>/?;:"0123456789 value\n')
|
|
222
|
-
>>> list(f.fields())
|
|
223
|
-
[('`~!@#$%^&*()_-=+[{]}\\|,<.>/?;:"0123456789', 'value')]
|
|
224
|
-
|
|
225
|
-
A marker is terminated by any white space character:
|
|
226
|
-
|
|
227
|
-
>>> f = toolbox.StandardFormat()
|
|
228
|
-
>>> f.open_string('\\mk a value\n\\mk\tanother one\n\\mk\rthird one\n\\mk\ffourth one')
|
|
229
|
-
>>> list(f.fields())
|
|
230
|
-
[('mk', 'a value'), ('mk', 'another one'), ('mk', 'third one'), ('mk', 'fourth one')]
|
|
231
|
-
|
|
232
|
-
Consecutive whitespace characters (except newline) are treated the same as one:
|
|
233
|
-
|
|
234
|
-
>>> f = toolbox.StandardFormat()
|
|
235
|
-
>>> f.open_string('\\mk \t\r\fa value\n')
|
|
236
|
-
>>> list(f.fields())
|
|
237
|
-
[('mk', 'a value')]
|
|
238
|
-
|
|
239
|
-
-----------------------
|
|
240
|
-
``toolbox.ToolboxData``
|
|
241
|
-
-----------------------
|
|
242
|
-
|
|
243
|
-
>>> db = toolbox.ToolboxData()
|
|
244
|
-
|
|
245
|
-
``toolbox.ToolboxData.parse()``
|
|
246
|
-
-------------------------------
|
|
247
|
-
check that normal parsing works:
|
|
248
|
-
|
|
249
|
-
>>> from xml.etree import ElementTree
|
|
250
|
-
>>> td = toolbox.ToolboxData()
|
|
251
|
-
>>> s = """\\_sh v3.0 400 Rotokas Dictionary
|
|
252
|
-
... \\_DateStampHasFourDigitYear
|
|
253
|
-
...
|
|
254
|
-
... \\lx kaa
|
|
255
|
-
... \\ps V.A
|
|
256
|
-
... \\ge gag
|
|
257
|
-
... \\gp nek i pas
|
|
258
|
-
...
|
|
259
|
-
... \\lx kaa
|
|
260
|
-
... \\ps V.B
|
|
261
|
-
... \\ge strangle
|
|
262
|
-
... \\gp pasim nek
|
|
263
|
-
... """
|
|
264
|
-
>>> td.open_string(s)
|
|
265
|
-
>>> tree = td.parse(key='lx')
|
|
266
|
-
>>> tree.tag
|
|
267
|
-
'toolbox_data'
|
|
268
|
-
>>> ElementTree.tostring(list(tree)[0]).decode('utf8')
|
|
269
|
-
'<header><_sh>v3.0 400 Rotokas Dictionary</_sh><_DateStampHasFourDigitYear /></header>'
|
|
270
|
-
>>> ElementTree.tostring(list(tree)[1]).decode('utf8')
|
|
271
|
-
'<record><lx>kaa</lx><ps>V.A</ps><ge>gag</ge><gp>nek i pas</gp></record>'
|
|
272
|
-
>>> ElementTree.tostring(list(tree)[2]).decode('utf8')
|
|
273
|
-
'<record><lx>kaa</lx><ps>V.B</ps><ge>strangle</ge><gp>pasim nek</gp></record>'
|
|
274
|
-
|
|
275
|
-
check that guessing the key marker works:
|
|
276
|
-
|
|
277
|
-
>>> from xml.etree import ElementTree
|
|
278
|
-
>>> td = toolbox.ToolboxData()
|
|
279
|
-
>>> s = """\\_sh v3.0 400 Rotokas Dictionary
|
|
280
|
-
... \\_DateStampHasFourDigitYear
|
|
281
|
-
...
|
|
282
|
-
... \\lx kaa
|
|
283
|
-
... \\ps V.A
|
|
284
|
-
... \\ge gag
|
|
285
|
-
... \\gp nek i pas
|
|
286
|
-
...
|
|
287
|
-
... \\lx kaa
|
|
288
|
-
... \\ps V.B
|
|
289
|
-
... \\ge strangle
|
|
290
|
-
... \\gp pasim nek
|
|
291
|
-
... """
|
|
292
|
-
>>> td.open_string(s)
|
|
293
|
-
>>> tree = td.parse()
|
|
294
|
-
>>> ElementTree.tostring(list(tree)[0]).decode('utf8')
|
|
295
|
-
'<header><_sh>v3.0 400 Rotokas Dictionary</_sh><_DateStampHasFourDigitYear /></header>'
|
|
296
|
-
>>> ElementTree.tostring(list(tree)[1]).decode('utf8')
|
|
297
|
-
'<record><lx>kaa</lx><ps>V.A</ps><ge>gag</ge><gp>nek i pas</gp></record>'
|
|
298
|
-
>>> ElementTree.tostring(list(tree)[2]).decode('utf8')
|
|
299
|
-
'<record><lx>kaa</lx><ps>V.B</ps><ge>strangle</ge><gp>pasim nek</gp></record>'
|
|
300
|
-
|
|
301
|
-
-----------------------
|
|
302
|
-
``toolbox`` functions
|
|
303
|
-
-----------------------
|
|
304
|
-
|
|
305
|
-
``toolbox.to_sfm_string()``
|
|
306
|
-
-------------------------------
|
|
307
|
-
|
|
1
|
+
.. Copyright (C) 2001-2018 NLTK Project
|
|
2
|
+
.. For license information, see LICENSE.TXT
|
|
3
|
+
|
|
4
|
+
===============================
|
|
5
|
+
Unit test cases for ``toolbox``
|
|
6
|
+
===============================
|
|
7
|
+
|
|
8
|
+
>>> from nltk import toolbox
|
|
9
|
+
|
|
10
|
+
--------------------------
|
|
11
|
+
``toolbox.StandardFormat``
|
|
12
|
+
--------------------------
|
|
13
|
+
|
|
14
|
+
>>> f = toolbox.StandardFormat()
|
|
15
|
+
|
|
16
|
+
``toolbox.StandardFormat.open()``
|
|
17
|
+
---------------------------------
|
|
18
|
+
>>> import os, tempfile
|
|
19
|
+
>>> (fd, fname) = tempfile.mkstemp()
|
|
20
|
+
>>> tf = os.fdopen(fd, "w")
|
|
21
|
+
>>> _ = tf.write('\\lx a value\n\\lx another value\n')
|
|
22
|
+
>>> tf.close()
|
|
23
|
+
>>> f = toolbox.StandardFormat()
|
|
24
|
+
>>> f.open(fname)
|
|
25
|
+
>>> list(f.fields())
|
|
26
|
+
[('lx', 'a value'), ('lx', 'another value')]
|
|
27
|
+
>>> f.close()
|
|
28
|
+
>>> os.unlink(fname)
|
|
29
|
+
|
|
30
|
+
``toolbox.StandardFormat.open_string()``
|
|
31
|
+
----------------------------------------
|
|
32
|
+
>>> f = toolbox.StandardFormat()
|
|
33
|
+
>>> f.open_string('\\lx a value\n\\lx another value\n')
|
|
34
|
+
>>> list(f.fields())
|
|
35
|
+
[('lx', 'a value'), ('lx', 'another value')]
|
|
36
|
+
>>> f.close()
|
|
37
|
+
|
|
38
|
+
``toolbox.StandardFormat.close()``
|
|
39
|
+
----------------------------------
|
|
40
|
+
>>> f = toolbox.StandardFormat()
|
|
41
|
+
>>> f.open_string('\\lx a value\n\\lx another value\n')
|
|
42
|
+
>>> list(f.fields())
|
|
43
|
+
[('lx', 'a value'), ('lx', 'another value')]
|
|
44
|
+
>>> f.close()
|
|
45
|
+
|
|
46
|
+
``toolbox.StandardFormat.line_num``
|
|
47
|
+
---------------------------------------
|
|
48
|
+
|
|
49
|
+
``StandardFormat.line_num`` contains the line number of the last line returned:
|
|
50
|
+
|
|
51
|
+
>>> f = toolbox.StandardFormat()
|
|
52
|
+
>>> f.open_string('\\lx a value\n\\lx another value\n\\lx a third value\n')
|
|
53
|
+
>>> line_nums = []
|
|
54
|
+
>>> for l in f.raw_fields():
|
|
55
|
+
... line_nums.append(f.line_num)
|
|
56
|
+
>>> line_nums
|
|
57
|
+
[1, 2, 3]
|
|
58
|
+
|
|
59
|
+
``StandardFormat.line_num`` contains the line number of the last line returned:
|
|
60
|
+
|
|
61
|
+
>>> f = toolbox.StandardFormat()
|
|
62
|
+
>>> f.open_string('\\lx two\nlines\n\\lx three\nlines\n\n\\lx two\nlines\n')
|
|
63
|
+
>>> line_nums = []
|
|
64
|
+
>>> for l in f.raw_fields():
|
|
65
|
+
... line_nums.append(f.line_num)
|
|
66
|
+
>>> line_nums
|
|
67
|
+
[2, 5, 7]
|
|
68
|
+
|
|
69
|
+
``StandardFormat.line_num`` doesn't exist before openning or after closing
|
|
70
|
+
a file or string:
|
|
71
|
+
|
|
72
|
+
>>> f = toolbox.StandardFormat()
|
|
73
|
+
>>> f.line_num
|
|
74
|
+
Traceback (most recent call last):
|
|
75
|
+
...
|
|
76
|
+
AttributeError: 'StandardFormat' object has no attribute 'line_num'
|
|
77
|
+
>>> f.open_string('\\lx two\nlines\n\\lx three\nlines\n\n\\lx two\nlines\n')
|
|
78
|
+
>>> line_nums = []
|
|
79
|
+
>>> for l in f.raw_fields():
|
|
80
|
+
... line_nums.append(f.line_num)
|
|
81
|
+
>>> line_nums
|
|
82
|
+
[2, 5, 7]
|
|
83
|
+
>>> f.close()
|
|
84
|
+
>>> f.line_num
|
|
85
|
+
Traceback (most recent call last):
|
|
86
|
+
...
|
|
87
|
+
AttributeError: 'StandardFormat' object has no attribute 'line_num'
|
|
88
|
+
|
|
89
|
+
``toolbox.StandardFormat.raw_fields()``
|
|
90
|
+
---------------------------------------
|
|
91
|
+
``raw_fields()`` returns an iterator over tuples of two strings representing the
|
|
92
|
+
marker and its value. The marker is given without the backslash and the value
|
|
93
|
+
without its trailing newline:
|
|
94
|
+
|
|
95
|
+
>>> f = toolbox.StandardFormat()
|
|
96
|
+
>>> f.open_string('\\lx a value\n\\lx another value\n')
|
|
97
|
+
>>> list(f.raw_fields())
|
|
98
|
+
[('lx', 'a value'), ('lx', 'another value')]
|
|
99
|
+
|
|
100
|
+
an empty file returns nothing:
|
|
101
|
+
|
|
102
|
+
>>> f = toolbox.StandardFormat()
|
|
103
|
+
>>> f.open_string('')
|
|
104
|
+
>>> list(f.raw_fields())
|
|
105
|
+
[]
|
|
106
|
+
|
|
107
|
+
file with only a newline returns WHAT SHOULD IT RETURN???:
|
|
108
|
+
|
|
109
|
+
>>> f = toolbox.StandardFormat()
|
|
110
|
+
>>> f.open_string('\n')
|
|
111
|
+
>>> list(f.raw_fields())
|
|
112
|
+
[(None, '')]
|
|
113
|
+
|
|
114
|
+
file with only one field should be parsed ok:
|
|
115
|
+
|
|
116
|
+
>>> f = toolbox.StandardFormat()
|
|
117
|
+
>>> f.open_string('\\lx one value\n')
|
|
118
|
+
>>> list(f.raw_fields())
|
|
119
|
+
[('lx', 'one value')]
|
|
120
|
+
|
|
121
|
+
file without a trailing newline should be parsed ok:
|
|
122
|
+
|
|
123
|
+
>>> f = toolbox.StandardFormat()
|
|
124
|
+
>>> f.open_string('\\lx a value\n\\lx another value')
|
|
125
|
+
>>> list(f.raw_fields())
|
|
126
|
+
[('lx', 'a value'), ('lx', 'another value')]
|
|
127
|
+
|
|
128
|
+
trailing white space is preserved except for the final newline:
|
|
129
|
+
|
|
130
|
+
>>> f = toolbox.StandardFormat()
|
|
131
|
+
>>> f.open_string('\\lx trailing space \n\\lx trailing tab\t\n\\lx extra newline\n\n')
|
|
132
|
+
>>> list(f.raw_fields())
|
|
133
|
+
[('lx', 'trailing space '), ('lx', 'trailing tab\t'), ('lx', 'extra newline\n')]
|
|
134
|
+
|
|
135
|
+
line wrapping is preserved:
|
|
136
|
+
|
|
137
|
+
>>> f = toolbox.StandardFormat()
|
|
138
|
+
>>> f.open_string('\\lx a value\nmore of the value\nand still more\n\\lc another val\n')
|
|
139
|
+
>>> list(f.raw_fields())
|
|
140
|
+
[('lx', 'a value\nmore of the value\nand still more'), ('lc', 'another val')]
|
|
141
|
+
|
|
142
|
+
file beginning with a multiline record should be parsed ok:
|
|
143
|
+
|
|
144
|
+
>>> f = toolbox.StandardFormat()
|
|
145
|
+
>>> f.open_string('\\lx a value\nmore of the value\nand still more\n\\lc another val\n')
|
|
146
|
+
>>> list(f.raw_fields())
|
|
147
|
+
[('lx', 'a value\nmore of the value\nand still more'), ('lc', 'another val')]
|
|
148
|
+
|
|
149
|
+
file ending with a multiline record should be parsed ok:
|
|
150
|
+
|
|
151
|
+
>>> f = toolbox.StandardFormat()
|
|
152
|
+
>>> f.open_string('\\lc a value\n\\lx another value\nmore of the value\nand still more\n')
|
|
153
|
+
>>> list(f.raw_fields())
|
|
154
|
+
[('lc', 'a value'), ('lx', 'another value\nmore of the value\nand still more')]
|
|
155
|
+
|
|
156
|
+
file beginning with a BOM should be parsed ok:
|
|
157
|
+
|
|
158
|
+
>>> f = toolbox.StandardFormat()
|
|
159
|
+
>>> f.open_string('\xef\xbb\xbf\\lx a value\n\\lx another value\n')
|
|
160
|
+
>>> list(f.raw_fields())
|
|
161
|
+
[('lx', 'a value'), ('lx', 'another value')]
|
|
162
|
+
|
|
163
|
+
file beginning with two BOMs should ignore only the first one:
|
|
164
|
+
|
|
165
|
+
>>> f = toolbox.StandardFormat()
|
|
166
|
+
>>> f.open_string('\xef\xbb\xbf\xef\xbb\xbf\\lx a value\n\\lx another value\n')
|
|
167
|
+
>>> list(f.raw_fields())
|
|
168
|
+
[(None, '\xef\xbb\xbf\\lx a value'), ('lx', 'another value')]
|
|
169
|
+
|
|
170
|
+
should not ignore a BOM not at the beginning of the file:
|
|
171
|
+
|
|
172
|
+
>>> f = toolbox.StandardFormat()
|
|
173
|
+
>>> f.open_string('\\lx a value\n\xef\xbb\xbf\\lx another value\n')
|
|
174
|
+
>>> list(f.raw_fields())
|
|
175
|
+
[('lx', 'a value\n\xef\xbb\xbf\\lx another value')]
|
|
176
|
+
|
|
177
|
+
``toolbox.StandardFormat.fields()``
|
|
178
|
+
-----------------------------------
|
|
179
|
+
trailing white space is not preserved:
|
|
180
|
+
|
|
181
|
+
>>> f = toolbox.StandardFormat()
|
|
182
|
+
>>> f.open_string('\\lx trailing space \n\\lx trailing tab\t\n\\lx extra newline\n\n')
|
|
183
|
+
>>> list(f.fields())
|
|
184
|
+
[('lx', 'trailing space'), ('lx', 'trailing tab'), ('lx', 'extra newline')]
|
|
185
|
+
|
|
186
|
+
multiline fields are unwrapped:
|
|
187
|
+
|
|
188
|
+
>>> f = toolbox.StandardFormat()
|
|
189
|
+
>>> f.open_string('\\lx a value\nmore of the value\nand still more\n\\lc another val\n')
|
|
190
|
+
>>> list(f.fields())
|
|
191
|
+
[('lx', 'a value more of the value and still more'), ('lc', 'another val')]
|
|
192
|
+
|
|
193
|
+
markers
|
|
194
|
+
-------
|
|
195
|
+
A backslash in the first position on a new line indicates the start of a
|
|
196
|
+
marker. The backslash is not part of the marker:
|
|
197
|
+
|
|
198
|
+
>>> f = toolbox.StandardFormat()
|
|
199
|
+
>>> f.open_string('\\mk a value\n')
|
|
200
|
+
>>> list(f.fields())
|
|
201
|
+
[('mk', 'a value')]
|
|
202
|
+
|
|
203
|
+
If the backslash occurs later in the line it does not indicate the start
|
|
204
|
+
of a marker:
|
|
205
|
+
|
|
206
|
+
>>> f = toolbox.StandardFormat()
|
|
207
|
+
>>> f.open_string('\\mk a value\n \\mk another one\n')
|
|
208
|
+
>>> list(f.raw_fields())
|
|
209
|
+
[('mk', 'a value\n \\mk another one')]
|
|
210
|
+
|
|
211
|
+
There is no specific limit to the length of a marker:
|
|
212
|
+
|
|
213
|
+
>>> f = toolbox.StandardFormat()
|
|
214
|
+
>>> f.open_string('\\this_is_an_extremely_long_marker value\n')
|
|
215
|
+
>>> list(f.fields())
|
|
216
|
+
[('this_is_an_extremely_long_marker', 'value')]
|
|
217
|
+
|
|
218
|
+
A marker can contain any non white space character:
|
|
219
|
+
|
|
220
|
+
>>> f = toolbox.StandardFormat()
|
|
221
|
+
>>> f.open_string('\\`~!@#$%^&*()_-=+[{]}\|,<.>/?;:"0123456789 value\n')
|
|
222
|
+
>>> list(f.fields())
|
|
223
|
+
[('`~!@#$%^&*()_-=+[{]}\\|,<.>/?;:"0123456789', 'value')]
|
|
224
|
+
|
|
225
|
+
A marker is terminated by any white space character:
|
|
226
|
+
|
|
227
|
+
>>> f = toolbox.StandardFormat()
|
|
228
|
+
>>> f.open_string('\\mk a value\n\\mk\tanother one\n\\mk\rthird one\n\\mk\ffourth one')
|
|
229
|
+
>>> list(f.fields())
|
|
230
|
+
[('mk', 'a value'), ('mk', 'another one'), ('mk', 'third one'), ('mk', 'fourth one')]
|
|
231
|
+
|
|
232
|
+
Consecutive whitespace characters (except newline) are treated the same as one:
|
|
233
|
+
|
|
234
|
+
>>> f = toolbox.StandardFormat()
|
|
235
|
+
>>> f.open_string('\\mk \t\r\fa value\n')
|
|
236
|
+
>>> list(f.fields())
|
|
237
|
+
[('mk', 'a value')]
|
|
238
|
+
|
|
239
|
+
-----------------------
|
|
240
|
+
``toolbox.ToolboxData``
|
|
241
|
+
-----------------------
|
|
242
|
+
|
|
243
|
+
>>> db = toolbox.ToolboxData()
|
|
244
|
+
|
|
245
|
+
``toolbox.ToolboxData.parse()``
|
|
246
|
+
-------------------------------
|
|
247
|
+
check that normal parsing works:
|
|
248
|
+
|
|
249
|
+
>>> from xml.etree import ElementTree
|
|
250
|
+
>>> td = toolbox.ToolboxData()
|
|
251
|
+
>>> s = """\\_sh v3.0 400 Rotokas Dictionary
|
|
252
|
+
... \\_DateStampHasFourDigitYear
|
|
253
|
+
...
|
|
254
|
+
... \\lx kaa
|
|
255
|
+
... \\ps V.A
|
|
256
|
+
... \\ge gag
|
|
257
|
+
... \\gp nek i pas
|
|
258
|
+
...
|
|
259
|
+
... \\lx kaa
|
|
260
|
+
... \\ps V.B
|
|
261
|
+
... \\ge strangle
|
|
262
|
+
... \\gp pasim nek
|
|
263
|
+
... """
|
|
264
|
+
>>> td.open_string(s)
|
|
265
|
+
>>> tree = td.parse(key='lx')
|
|
266
|
+
>>> tree.tag
|
|
267
|
+
'toolbox_data'
|
|
268
|
+
>>> ElementTree.tostring(list(tree)[0]).decode('utf8')
|
|
269
|
+
'<header><_sh>v3.0 400 Rotokas Dictionary</_sh><_DateStampHasFourDigitYear /></header>'
|
|
270
|
+
>>> ElementTree.tostring(list(tree)[1]).decode('utf8')
|
|
271
|
+
'<record><lx>kaa</lx><ps>V.A</ps><ge>gag</ge><gp>nek i pas</gp></record>'
|
|
272
|
+
>>> ElementTree.tostring(list(tree)[2]).decode('utf8')
|
|
273
|
+
'<record><lx>kaa</lx><ps>V.B</ps><ge>strangle</ge><gp>pasim nek</gp></record>'
|
|
274
|
+
|
|
275
|
+
check that guessing the key marker works:
|
|
276
|
+
|
|
277
|
+
>>> from xml.etree import ElementTree
|
|
278
|
+
>>> td = toolbox.ToolboxData()
|
|
279
|
+
>>> s = """\\_sh v3.0 400 Rotokas Dictionary
|
|
280
|
+
... \\_DateStampHasFourDigitYear
|
|
281
|
+
...
|
|
282
|
+
... \\lx kaa
|
|
283
|
+
... \\ps V.A
|
|
284
|
+
... \\ge gag
|
|
285
|
+
... \\gp nek i pas
|
|
286
|
+
...
|
|
287
|
+
... \\lx kaa
|
|
288
|
+
... \\ps V.B
|
|
289
|
+
... \\ge strangle
|
|
290
|
+
... \\gp pasim nek
|
|
291
|
+
... """
|
|
292
|
+
>>> td.open_string(s)
|
|
293
|
+
>>> tree = td.parse()
|
|
294
|
+
>>> ElementTree.tostring(list(tree)[0]).decode('utf8')
|
|
295
|
+
'<header><_sh>v3.0 400 Rotokas Dictionary</_sh><_DateStampHasFourDigitYear /></header>'
|
|
296
|
+
>>> ElementTree.tostring(list(tree)[1]).decode('utf8')
|
|
297
|
+
'<record><lx>kaa</lx><ps>V.A</ps><ge>gag</ge><gp>nek i pas</gp></record>'
|
|
298
|
+
>>> ElementTree.tostring(list(tree)[2]).decode('utf8')
|
|
299
|
+
'<record><lx>kaa</lx><ps>V.B</ps><ge>strangle</ge><gp>pasim nek</gp></record>'
|
|
300
|
+
|
|
301
|
+
-----------------------
|
|
302
|
+
``toolbox`` functions
|
|
303
|
+
-----------------------
|
|
304
|
+
|
|
305
|
+
``toolbox.to_sfm_string()``
|
|
306
|
+
-------------------------------
|
|
307
|
+
|