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,142 +1,140 @@
|
|
|
1
|
-
# Natural Language Toolkit: Tokenizers
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
4
|
-
# Author: Yoav Goldberg <yoavg@cs.bgu.ac.il>
|
|
5
|
-
# Steven Bird <stevenbird1@gmail.com> (minor edits)
|
|
6
|
-
# URL: <http://nltk.sourceforge.net>
|
|
7
|
-
# For license information, see LICENSE.TXT
|
|
8
|
-
|
|
9
|
-
"""
|
|
10
|
-
S-Expression Tokenizer
|
|
11
|
-
|
|
12
|
-
``SExprTokenizer`` is used to find parenthesized expressions in a
|
|
13
|
-
string. In particular, it divides a string into a sequence of
|
|
14
|
-
substrings that are either parenthesized expressions (including any
|
|
15
|
-
nested parenthesized expressions), or other whitespace-separated
|
|
16
|
-
tokens.
|
|
17
|
-
|
|
18
|
-
>>> from nltk.tokenize import SExprTokenizer
|
|
19
|
-
>>> SExprTokenizer().tokenize('(a b (c d)) e f (g)')
|
|
20
|
-
['(a b (c d))', 'e', 'f', '(g)']
|
|
21
|
-
|
|
22
|
-
By default, `SExprTokenizer` will raise a ``ValueError`` exception if
|
|
23
|
-
used to tokenize an expression with non-matching parentheses:
|
|
24
|
-
|
|
25
|
-
>>> SExprTokenizer().tokenize('c) d) e (f (g')
|
|
26
|
-
Traceback (most recent call last):
|
|
27
|
-
...
|
|
28
|
-
ValueError: Un-matched close paren at char 1
|
|
29
|
-
|
|
30
|
-
The ``strict`` argument can be set to False to allow for
|
|
31
|
-
non-matching parentheses. Any unmatched close parentheses will be
|
|
32
|
-
listed as their own s-expression; and the last partial sexpr with
|
|
33
|
-
unmatched open parentheses will be listed as its own sexpr:
|
|
34
|
-
|
|
35
|
-
>>> SExprTokenizer(strict=False).tokenize('c) d) e (f (g')
|
|
36
|
-
['c', ')', 'd', ')', 'e', '(f (g']
|
|
37
|
-
|
|
38
|
-
The characters used for open and close parentheses may be customized
|
|
39
|
-
using the ``parens`` argument to the `SExprTokenizer` constructor:
|
|
40
|
-
|
|
41
|
-
>>> SExprTokenizer(parens='{}').tokenize('{a b {c d}} e f {g}')
|
|
42
|
-
['{a b {c d}}', 'e', 'f', '{g}']
|
|
43
|
-
|
|
44
|
-
The s-expression tokenizer is also available as a function:
|
|
45
|
-
|
|
46
|
-
>>> from nltk.tokenize import sexpr_tokenize
|
|
47
|
-
>>> sexpr_tokenize('(a b (c d)) e f (g)')
|
|
48
|
-
['(a b (c d))', 'e', 'f', '(g)']
|
|
49
|
-
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
import re
|
|
53
|
-
|
|
54
|
-
from nltk.tokenize.api import TokenizerI
|
|
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
|
-
self.
|
|
83
|
-
self.
|
|
84
|
-
self.
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
pos
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
1
|
+
# Natural Language Toolkit: Tokenizers
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
|
+
# Author: Yoav Goldberg <yoavg@cs.bgu.ac.il>
|
|
5
|
+
# Steven Bird <stevenbird1@gmail.com> (minor edits)
|
|
6
|
+
# URL: <http://nltk.sourceforge.net>
|
|
7
|
+
# For license information, see LICENSE.TXT
|
|
8
|
+
|
|
9
|
+
"""
|
|
10
|
+
S-Expression Tokenizer
|
|
11
|
+
|
|
12
|
+
``SExprTokenizer`` is used to find parenthesized expressions in a
|
|
13
|
+
string. In particular, it divides a string into a sequence of
|
|
14
|
+
substrings that are either parenthesized expressions (including any
|
|
15
|
+
nested parenthesized expressions), or other whitespace-separated
|
|
16
|
+
tokens.
|
|
17
|
+
|
|
18
|
+
>>> from nltk.tokenize import SExprTokenizer
|
|
19
|
+
>>> SExprTokenizer().tokenize('(a b (c d)) e f (g)')
|
|
20
|
+
['(a b (c d))', 'e', 'f', '(g)']
|
|
21
|
+
|
|
22
|
+
By default, `SExprTokenizer` will raise a ``ValueError`` exception if
|
|
23
|
+
used to tokenize an expression with non-matching parentheses:
|
|
24
|
+
|
|
25
|
+
>>> SExprTokenizer().tokenize('c) d) e (f (g')
|
|
26
|
+
Traceback (most recent call last):
|
|
27
|
+
...
|
|
28
|
+
ValueError: Un-matched close paren at char 1
|
|
29
|
+
|
|
30
|
+
The ``strict`` argument can be set to False to allow for
|
|
31
|
+
non-matching parentheses. Any unmatched close parentheses will be
|
|
32
|
+
listed as their own s-expression; and the last partial sexpr with
|
|
33
|
+
unmatched open parentheses will be listed as its own sexpr:
|
|
34
|
+
|
|
35
|
+
>>> SExprTokenizer(strict=False).tokenize('c) d) e (f (g')
|
|
36
|
+
['c', ')', 'd', ')', 'e', '(f (g']
|
|
37
|
+
|
|
38
|
+
The characters used for open and close parentheses may be customized
|
|
39
|
+
using the ``parens`` argument to the `SExprTokenizer` constructor:
|
|
40
|
+
|
|
41
|
+
>>> SExprTokenizer(parens='{}').tokenize('{a b {c d}} e f {g}')
|
|
42
|
+
['{a b {c d}}', 'e', 'f', '{g}']
|
|
43
|
+
|
|
44
|
+
The s-expression tokenizer is also available as a function:
|
|
45
|
+
|
|
46
|
+
>>> from nltk.tokenize import sexpr_tokenize
|
|
47
|
+
>>> sexpr_tokenize('(a b (c d)) e f (g)')
|
|
48
|
+
['(a b (c d))', 'e', 'f', '(g)']
|
|
49
|
+
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
import re
|
|
53
|
+
|
|
54
|
+
from nltk.tokenize.api import TokenizerI
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class SExprTokenizer(TokenizerI):
|
|
58
|
+
"""
|
|
59
|
+
A tokenizer that divides strings into s-expressions.
|
|
60
|
+
An s-expresion can be either:
|
|
61
|
+
|
|
62
|
+
- a parenthesized expression, including any nested parenthesized
|
|
63
|
+
expressions, or
|
|
64
|
+
- a sequence of non-whitespace non-parenthesis characters.
|
|
65
|
+
|
|
66
|
+
For example, the string ``(a (b c)) d e (f)`` consists of four
|
|
67
|
+
s-expressions: ``(a (b c))``, ``d``, ``e``, and ``(f)``.
|
|
68
|
+
|
|
69
|
+
By default, the characters ``(`` and ``)`` are treated as open and
|
|
70
|
+
close parentheses, but alternative strings may be specified.
|
|
71
|
+
|
|
72
|
+
:param parens: A two-element sequence specifying the open and close parentheses
|
|
73
|
+
that should be used to find sexprs. This will typically be either a
|
|
74
|
+
two-character string, or a list of two strings.
|
|
75
|
+
:type parens: str or list
|
|
76
|
+
:param strict: If true, then raise an exception when tokenizing an ill-formed sexpr.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
def __init__(self, parens='()', strict=True):
|
|
80
|
+
if len(parens) != 2:
|
|
81
|
+
raise ValueError('parens must contain exactly two strings')
|
|
82
|
+
self._strict = strict
|
|
83
|
+
self._open_paren = parens[0]
|
|
84
|
+
self._close_paren = parens[1]
|
|
85
|
+
self._paren_regexp = re.compile('%s|%s' % (re.escape(parens[0]),
|
|
86
|
+
re.escape(parens[1])))
|
|
87
|
+
|
|
88
|
+
def tokenize(self, text):
|
|
89
|
+
"""
|
|
90
|
+
Return a list of s-expressions extracted from *text*.
|
|
91
|
+
For example:
|
|
92
|
+
|
|
93
|
+
>>> SExprTokenizer().tokenize('(a b (c d)) e f (g)')
|
|
94
|
+
['(a b (c d))', 'e', 'f', '(g)']
|
|
95
|
+
|
|
96
|
+
All parentheses are assumed to mark s-expressions.
|
|
97
|
+
(No special processing is done to exclude parentheses that occur
|
|
98
|
+
inside strings, or following backslash characters.)
|
|
99
|
+
|
|
100
|
+
If the given expression contains non-matching parentheses,
|
|
101
|
+
then the behavior of the tokenizer depends on the ``strict``
|
|
102
|
+
parameter to the constructor. If ``strict`` is ``True``, then
|
|
103
|
+
raise a ``ValueError``. If ``strict`` is ``False``, then any
|
|
104
|
+
unmatched close parentheses will be listed as their own
|
|
105
|
+
s-expression; and the last partial s-expression with unmatched open
|
|
106
|
+
parentheses will be listed as its own s-expression:
|
|
107
|
+
|
|
108
|
+
>>> SExprTokenizer(strict=False).tokenize('c) d) e (f (g')
|
|
109
|
+
['c', ')', 'd', ')', 'e', '(f (g']
|
|
110
|
+
|
|
111
|
+
:param text: the string to be tokenized
|
|
112
|
+
:type text: str or iter(str)
|
|
113
|
+
:rtype: iter(str)
|
|
114
|
+
"""
|
|
115
|
+
result = []
|
|
116
|
+
pos = 0
|
|
117
|
+
depth = 0
|
|
118
|
+
for m in self._paren_regexp.finditer(text):
|
|
119
|
+
paren = m.group()
|
|
120
|
+
if depth == 0:
|
|
121
|
+
result += text[pos:m.start()].split()
|
|
122
|
+
pos = m.start()
|
|
123
|
+
if paren == self._open_paren:
|
|
124
|
+
depth += 1
|
|
125
|
+
if paren == self._close_paren:
|
|
126
|
+
if self._strict and depth == 0:
|
|
127
|
+
raise ValueError('Un-matched close paren at char %d'
|
|
128
|
+
% m.start())
|
|
129
|
+
depth = max(0, depth - 1)
|
|
130
|
+
if depth == 0:
|
|
131
|
+
result.append(text[pos:m.end()])
|
|
132
|
+
pos = m.end()
|
|
133
|
+
if self._strict and depth > 0:
|
|
134
|
+
raise ValueError('Un-matched open paren at char %d' % pos)
|
|
135
|
+
if pos < len(text):
|
|
136
|
+
result.append(text[pos:])
|
|
137
|
+
return result
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
sexpr_tokenize = SExprTokenizer().tokenize
|
|
@@ -1,136 +1,138 @@
|
|
|
1
|
-
# Natural Language Toolkit: Simple Tokenizers
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
4
|
-
# Author: Edward Loper <edloper@gmail.com>
|
|
5
|
-
# Steven Bird <stevenbird1@gmail.com>
|
|
6
|
-
# URL: <http://nltk.sourceforge.net>
|
|
7
|
-
# For license information, see LICENSE.TXT
|
|
8
|
-
|
|
9
|
-
r"""
|
|
10
|
-
Simple Tokenizers
|
|
11
|
-
|
|
12
|
-
These tokenizers divide strings into substrings using the string
|
|
13
|
-
``split()`` method.
|
|
14
|
-
When tokenizing using a particular delimiter string, use
|
|
15
|
-
the string ``split()`` method directly, as this is more efficient.
|
|
16
|
-
|
|
17
|
-
The simple tokenizers are *not* available as separate functions;
|
|
18
|
-
instead, you should just use the string ``split()`` method directly:
|
|
19
|
-
|
|
20
|
-
>>> s = "Good muffins cost $3.88\nin New York. Please buy me\ntwo of them.\n\nThanks."
|
|
21
|
-
>>> s.split()
|
|
22
|
-
['Good', 'muffins', 'cost', '$3.88', 'in', 'New', 'York.',
|
|
23
|
-
'Please', 'buy', 'me', 'two', 'of', 'them.', 'Thanks.']
|
|
24
|
-
>>> s.split(' ')
|
|
25
|
-
['Good', 'muffins', 'cost', '$3.88\nin', 'New', 'York.', '',
|
|
26
|
-
'Please', 'buy', 'me\ntwo', 'of', 'them.\n\nThanks.']
|
|
27
|
-
>>> s.split('\n')
|
|
28
|
-
['Good muffins cost $3.88', 'in New York. Please buy me',
|
|
29
|
-
'two of them.', '', 'Thanks.']
|
|
30
|
-
|
|
31
|
-
The simple tokenizers are mainly useful because they follow the
|
|
32
|
-
standard ``TokenizerI`` interface, and so can be used with any code
|
|
33
|
-
that expects a tokenizer. For example, these tokenizers can be used
|
|
34
|
-
to specify the tokenization conventions when building a `CorpusReader`.
|
|
35
|
-
|
|
36
|
-
"""
|
|
37
|
-
from __future__ import unicode_literals
|
|
38
|
-
from nltk.tokenize.api import TokenizerI, StringTokenizer
|
|
39
|
-
from nltk.tokenize.util import string_span_tokenize, regexp_span_tokenize
|
|
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
|
-
def
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
>>>
|
|
87
|
-
>>> LineTokenizer(blanklines='
|
|
88
|
-
['Good muffins cost $3.88', 'in New York. Please buy me',
|
|
89
|
-
'two of them.', 'Thanks.']
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
1
|
+
# Natural Language Toolkit: Simple Tokenizers
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
|
+
# Author: Edward Loper <edloper@gmail.com>
|
|
5
|
+
# Steven Bird <stevenbird1@gmail.com>
|
|
6
|
+
# URL: <http://nltk.sourceforge.net>
|
|
7
|
+
# For license information, see LICENSE.TXT
|
|
8
|
+
|
|
9
|
+
r"""
|
|
10
|
+
Simple Tokenizers
|
|
11
|
+
|
|
12
|
+
These tokenizers divide strings into substrings using the string
|
|
13
|
+
``split()`` method.
|
|
14
|
+
When tokenizing using a particular delimiter string, use
|
|
15
|
+
the string ``split()`` method directly, as this is more efficient.
|
|
16
|
+
|
|
17
|
+
The simple tokenizers are *not* available as separate functions;
|
|
18
|
+
instead, you should just use the string ``split()`` method directly:
|
|
19
|
+
|
|
20
|
+
>>> s = "Good muffins cost $3.88\nin New York. Please buy me\ntwo of them.\n\nThanks."
|
|
21
|
+
>>> s.split()
|
|
22
|
+
['Good', 'muffins', 'cost', '$3.88', 'in', 'New', 'York.',
|
|
23
|
+
'Please', 'buy', 'me', 'two', 'of', 'them.', 'Thanks.']
|
|
24
|
+
>>> s.split(' ')
|
|
25
|
+
['Good', 'muffins', 'cost', '$3.88\nin', 'New', 'York.', '',
|
|
26
|
+
'Please', 'buy', 'me\ntwo', 'of', 'them.\n\nThanks.']
|
|
27
|
+
>>> s.split('\n')
|
|
28
|
+
['Good muffins cost $3.88', 'in New York. Please buy me',
|
|
29
|
+
'two of them.', '', 'Thanks.']
|
|
30
|
+
|
|
31
|
+
The simple tokenizers are mainly useful because they follow the
|
|
32
|
+
standard ``TokenizerI`` interface, and so can be used with any code
|
|
33
|
+
that expects a tokenizer. For example, these tokenizers can be used
|
|
34
|
+
to specify the tokenization conventions when building a `CorpusReader`.
|
|
35
|
+
|
|
36
|
+
"""
|
|
37
|
+
from __future__ import unicode_literals
|
|
38
|
+
from nltk.tokenize.api import TokenizerI, StringTokenizer
|
|
39
|
+
from nltk.tokenize.util import string_span_tokenize, regexp_span_tokenize
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class SpaceTokenizer(StringTokenizer):
|
|
43
|
+
r"""Tokenize a string using the space character as a delimiter,
|
|
44
|
+
which is the same as ``s.split(' ')``.
|
|
45
|
+
|
|
46
|
+
>>> from nltk.tokenize import SpaceTokenizer
|
|
47
|
+
>>> s = "Good muffins cost $3.88\nin New York. Please buy me\ntwo of them.\n\nThanks."
|
|
48
|
+
>>> SpaceTokenizer().tokenize(s)
|
|
49
|
+
['Good', 'muffins', 'cost', '$3.88\nin', 'New', 'York.', '',
|
|
50
|
+
'Please', 'buy', 'me\ntwo', 'of', 'them.\n\nThanks.']
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
_string = ' '
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class TabTokenizer(StringTokenizer):
|
|
57
|
+
r"""Tokenize a string use the tab character as a delimiter,
|
|
58
|
+
the same as ``s.split('\t')``.
|
|
59
|
+
|
|
60
|
+
>>> from nltk.tokenize import TabTokenizer
|
|
61
|
+
>>> TabTokenizer().tokenize('a\tb c\n\t d')
|
|
62
|
+
['a', 'b c\n', ' d']
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
_string = '\t'
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class CharTokenizer(StringTokenizer):
|
|
69
|
+
"""Tokenize a string into individual characters. If this functionality
|
|
70
|
+
is ever required directly, use ``for char in string``.
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
def tokenize(self, s):
|
|
74
|
+
return list(s)
|
|
75
|
+
|
|
76
|
+
def span_tokenize(self, s):
|
|
77
|
+
for i, j in enumerate(range(1, len(s) + 1)):
|
|
78
|
+
yield i, j
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class LineTokenizer(TokenizerI):
|
|
82
|
+
r"""Tokenize a string into its lines, optionally discarding blank lines.
|
|
83
|
+
This is similar to ``s.split('\n')``.
|
|
84
|
+
|
|
85
|
+
>>> from nltk.tokenize import LineTokenizer
|
|
86
|
+
>>> s = "Good muffins cost $3.88\nin New York. Please buy me\ntwo of them.\n\nThanks."
|
|
87
|
+
>>> LineTokenizer(blanklines='keep').tokenize(s)
|
|
88
|
+
['Good muffins cost $3.88', 'in New York. Please buy me',
|
|
89
|
+
'two of them.', '', 'Thanks.']
|
|
90
|
+
>>> # same as [l for l in s.split('\n') if l.strip()]:
|
|
91
|
+
>>> LineTokenizer(blanklines='discard').tokenize(s)
|
|
92
|
+
['Good muffins cost $3.88', 'in New York. Please buy me',
|
|
93
|
+
'two of them.', 'Thanks.']
|
|
94
|
+
|
|
95
|
+
:param blanklines: Indicates how blank lines should be handled. Valid values are:
|
|
96
|
+
|
|
97
|
+
- ``discard``: strip blank lines out of the token list before returning it.
|
|
98
|
+
A line is considered blank if it contains only whitespace characters.
|
|
99
|
+
- ``keep``: leave all blank lines in the token list.
|
|
100
|
+
- ``discard-eof``: if the string ends with a newline, then do not generate
|
|
101
|
+
a corresponding token ``''`` after that newline.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
def __init__(self, blanklines='discard'):
|
|
105
|
+
valid_blanklines = ('discard', 'keep', 'discard-eof')
|
|
106
|
+
if blanklines not in valid_blanklines:
|
|
107
|
+
raise ValueError('Blank lines must be one of: %s' %
|
|
108
|
+
' '.join(valid_blanklines))
|
|
109
|
+
|
|
110
|
+
self._blanklines = blanklines
|
|
111
|
+
|
|
112
|
+
def tokenize(self, s):
|
|
113
|
+
lines = s.splitlines()
|
|
114
|
+
# If requested, strip off blank lines.
|
|
115
|
+
if self._blanklines == 'discard':
|
|
116
|
+
lines = [l for l in lines if l.rstrip()]
|
|
117
|
+
elif self._blanklines == 'discard-eof':
|
|
118
|
+
if lines and not lines[-1].strip():
|
|
119
|
+
lines.pop()
|
|
120
|
+
return lines
|
|
121
|
+
|
|
122
|
+
# discard-eof not implemented
|
|
123
|
+
def span_tokenize(self, s):
|
|
124
|
+
if self._blanklines == 'keep':
|
|
125
|
+
for span in string_span_tokenize(s, r'\n'):
|
|
126
|
+
yield span
|
|
127
|
+
else:
|
|
128
|
+
for span in regexp_span_tokenize(s, r'\n(\s+\n)*'):
|
|
129
|
+
yield span
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
######################################################################
|
|
133
|
+
# { Tokenization Functions
|
|
134
|
+
######################################################################
|
|
135
|
+
# XXX: it is stated in module docs that there is no function versions
|
|
136
|
+
|
|
137
|
+
def line_tokenize(text, blanklines='discard'):
|
|
138
|
+
return LineTokenizer(blanklines).tokenize(text)
|