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,98 +1,98 @@
|
|
|
1
|
-
# Natural Language Toolkit: Classifiers
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
4
|
-
# Author: Edward Loper <edloper@gmail.com>
|
|
5
|
-
# URL: <http://nltk.org/>
|
|
6
|
-
# For license information, see LICENSE.TXT
|
|
7
|
-
|
|
8
|
-
"""
|
|
9
|
-
Classes and interfaces for labeling tokens with category labels (or
|
|
10
|
-
"class labels"). Typically, labels are represented with strings
|
|
11
|
-
(such as ``'health'`` or ``'sports'``). Classifiers can be used to
|
|
12
|
-
perform a wide range of classification tasks. For example,
|
|
13
|
-
classifiers can be used...
|
|
14
|
-
|
|
15
|
-
- to classify documents by topic
|
|
16
|
-
- to classify ambiguous words by which word sense is intended
|
|
17
|
-
- to classify acoustic signals by which phoneme they represent
|
|
18
|
-
- to classify sentences by their author
|
|
19
|
-
|
|
20
|
-
Features
|
|
21
|
-
========
|
|
22
|
-
In order to decide which category label is appropriate for a given
|
|
23
|
-
token, classifiers examine one or more 'features' of the token. These
|
|
24
|
-
"features" are typically chosen by hand, and indicate which aspects
|
|
25
|
-
of the token are relevant to the classification decision. For
|
|
26
|
-
example, a document classifier might use a separate feature for each
|
|
27
|
-
word, recording how often that word occurred in the document.
|
|
28
|
-
|
|
29
|
-
Featuresets
|
|
30
|
-
===========
|
|
31
|
-
The features describing a token are encoded using a "featureset",
|
|
32
|
-
which is a dictionary that maps from "feature names" to "feature
|
|
33
|
-
values". Feature names are unique strings that indicate what aspect
|
|
34
|
-
of the token is encoded by the feature. Examples include
|
|
35
|
-
``'prevword'``, for a feature whose value is the previous word; and
|
|
36
|
-
``'contains-word(library)'`` for a feature that is true when a document
|
|
37
|
-
contains the word ``'library'``. Feature values are typically
|
|
38
|
-
booleans, numbers, or strings, depending on which feature they
|
|
39
|
-
describe.
|
|
40
|
-
|
|
41
|
-
Featuresets are typically constructed using a "feature detector"
|
|
42
|
-
(also known as a "feature extractor"). A feature detector is a
|
|
43
|
-
function that takes a token (and sometimes information about its
|
|
44
|
-
context) as its input, and returns a featureset describing that token.
|
|
45
|
-
For example, the following feature detector converts a document
|
|
46
|
-
(stored as a list of words) to a featureset describing the set of
|
|
47
|
-
words included in the document:
|
|
48
|
-
|
|
49
|
-
>>> # Define a feature detector function.
|
|
50
|
-
>>> def document_features(document):
|
|
51
|
-
... return dict([('contains-word(%s)' % w, True) for w in document])
|
|
52
|
-
|
|
53
|
-
Feature detectors are typically applied to each token before it is fed
|
|
54
|
-
to the classifier:
|
|
55
|
-
|
|
56
|
-
>>> # Classify each Gutenberg document.
|
|
57
|
-
>>> from nltk.corpus import gutenberg
|
|
58
|
-
>>> for fileid in gutenberg.fileids(): # doctest: +SKIP
|
|
59
|
-
... doc = gutenberg.words(fileid) # doctest: +SKIP
|
|
60
|
-
... print fileid, classifier.classify(document_features(doc)) # doctest: +SKIP
|
|
61
|
-
|
|
62
|
-
The parameters that a feature detector expects will vary, depending on
|
|
63
|
-
the task and the needs of the feature detector. For example, a
|
|
64
|
-
feature detector for word sense disambiguation (WSD) might take as its
|
|
65
|
-
input a sentence, and the index of a word that should be classified,
|
|
66
|
-
and return a featureset for that word. The following feature detector
|
|
67
|
-
for WSD includes features describing the left and right contexts of
|
|
68
|
-
the target word:
|
|
69
|
-
|
|
70
|
-
>>> def wsd_features(sentence, index):
|
|
71
|
-
... featureset = {}
|
|
72
|
-
... for i in range(max(0, index-3), index):
|
|
73
|
-
... featureset['left-context(%s)' % sentence[i]] = True
|
|
74
|
-
... for i in range(index, max(index+3, len(sentence))):
|
|
75
|
-
... featureset['right-context(%s)' % sentence[i]] = True
|
|
76
|
-
... return featureset
|
|
77
|
-
|
|
78
|
-
Training Classifiers
|
|
79
|
-
====================
|
|
80
|
-
Most classifiers are built by training them on a list of hand-labeled
|
|
81
|
-
examples, known as the "training set". Training sets are represented
|
|
82
|
-
as lists of ``(featuredict, label)`` tuples.
|
|
83
|
-
"""
|
|
84
|
-
|
|
85
|
-
from nltk.classify.api import ClassifierI, MultiClassifierI
|
|
86
|
-
from nltk.classify.megam import config_megam, call_megam
|
|
87
|
-
from nltk.classify.weka import WekaClassifier, config_weka
|
|
88
|
-
from nltk.classify.naivebayes import NaiveBayesClassifier
|
|
89
|
-
from nltk.classify.positivenaivebayes import PositiveNaiveBayesClassifier
|
|
90
|
-
from nltk.classify.decisiontree import DecisionTreeClassifier
|
|
91
|
-
from nltk.classify.rte_classify import rte_classifier, rte_features, RTEFeatureExtractor
|
|
92
|
-
from nltk.classify.util import accuracy, apply_features, log_likelihood
|
|
93
|
-
from nltk.classify.scikitlearn import SklearnClassifier
|
|
94
|
-
from nltk.classify.maxent import (MaxentClassifier, BinaryMaxentFeatureEncoding,
|
|
95
|
-
TypedMaxentFeatureEncoding,
|
|
96
|
-
ConditionalExponentialClassifier)
|
|
97
|
-
from nltk.classify.senna import Senna
|
|
98
|
-
from nltk.classify.textcat import TextCat
|
|
1
|
+
# Natural Language Toolkit: Classifiers
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
|
+
# Author: Edward Loper <edloper@gmail.com>
|
|
5
|
+
# URL: <http://nltk.org/>
|
|
6
|
+
# For license information, see LICENSE.TXT
|
|
7
|
+
|
|
8
|
+
"""
|
|
9
|
+
Classes and interfaces for labeling tokens with category labels (or
|
|
10
|
+
"class labels"). Typically, labels are represented with strings
|
|
11
|
+
(such as ``'health'`` or ``'sports'``). Classifiers can be used to
|
|
12
|
+
perform a wide range of classification tasks. For example,
|
|
13
|
+
classifiers can be used...
|
|
14
|
+
|
|
15
|
+
- to classify documents by topic
|
|
16
|
+
- to classify ambiguous words by which word sense is intended
|
|
17
|
+
- to classify acoustic signals by which phoneme they represent
|
|
18
|
+
- to classify sentences by their author
|
|
19
|
+
|
|
20
|
+
Features
|
|
21
|
+
========
|
|
22
|
+
In order to decide which category label is appropriate for a given
|
|
23
|
+
token, classifiers examine one or more 'features' of the token. These
|
|
24
|
+
"features" are typically chosen by hand, and indicate which aspects
|
|
25
|
+
of the token are relevant to the classification decision. For
|
|
26
|
+
example, a document classifier might use a separate feature for each
|
|
27
|
+
word, recording how often that word occurred in the document.
|
|
28
|
+
|
|
29
|
+
Featuresets
|
|
30
|
+
===========
|
|
31
|
+
The features describing a token are encoded using a "featureset",
|
|
32
|
+
which is a dictionary that maps from "feature names" to "feature
|
|
33
|
+
values". Feature names are unique strings that indicate what aspect
|
|
34
|
+
of the token is encoded by the feature. Examples include
|
|
35
|
+
``'prevword'``, for a feature whose value is the previous word; and
|
|
36
|
+
``'contains-word(library)'`` for a feature that is true when a document
|
|
37
|
+
contains the word ``'library'``. Feature values are typically
|
|
38
|
+
booleans, numbers, or strings, depending on which feature they
|
|
39
|
+
describe.
|
|
40
|
+
|
|
41
|
+
Featuresets are typically constructed using a "feature detector"
|
|
42
|
+
(also known as a "feature extractor"). A feature detector is a
|
|
43
|
+
function that takes a token (and sometimes information about its
|
|
44
|
+
context) as its input, and returns a featureset describing that token.
|
|
45
|
+
For example, the following feature detector converts a document
|
|
46
|
+
(stored as a list of words) to a featureset describing the set of
|
|
47
|
+
words included in the document:
|
|
48
|
+
|
|
49
|
+
>>> # Define a feature detector function.
|
|
50
|
+
>>> def document_features(document):
|
|
51
|
+
... return dict([('contains-word(%s)' % w, True) for w in document])
|
|
52
|
+
|
|
53
|
+
Feature detectors are typically applied to each token before it is fed
|
|
54
|
+
to the classifier:
|
|
55
|
+
|
|
56
|
+
>>> # Classify each Gutenberg document.
|
|
57
|
+
>>> from nltk.corpus import gutenberg
|
|
58
|
+
>>> for fileid in gutenberg.fileids(): # doctest: +SKIP
|
|
59
|
+
... doc = gutenberg.words(fileid) # doctest: +SKIP
|
|
60
|
+
... print fileid, classifier.classify(document_features(doc)) # doctest: +SKIP
|
|
61
|
+
|
|
62
|
+
The parameters that a feature detector expects will vary, depending on
|
|
63
|
+
the task and the needs of the feature detector. For example, a
|
|
64
|
+
feature detector for word sense disambiguation (WSD) might take as its
|
|
65
|
+
input a sentence, and the index of a word that should be classified,
|
|
66
|
+
and return a featureset for that word. The following feature detector
|
|
67
|
+
for WSD includes features describing the left and right contexts of
|
|
68
|
+
the target word:
|
|
69
|
+
|
|
70
|
+
>>> def wsd_features(sentence, index):
|
|
71
|
+
... featureset = {}
|
|
72
|
+
... for i in range(max(0, index-3), index):
|
|
73
|
+
... featureset['left-context(%s)' % sentence[i]] = True
|
|
74
|
+
... for i in range(index, max(index+3, len(sentence))):
|
|
75
|
+
... featureset['right-context(%s)' % sentence[i]] = True
|
|
76
|
+
... return featureset
|
|
77
|
+
|
|
78
|
+
Training Classifiers
|
|
79
|
+
====================
|
|
80
|
+
Most classifiers are built by training them on a list of hand-labeled
|
|
81
|
+
examples, known as the "training set". Training sets are represented
|
|
82
|
+
as lists of ``(featuredict, label)`` tuples.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
from nltk.classify.api import ClassifierI, MultiClassifierI
|
|
86
|
+
from nltk.classify.megam import config_megam, call_megam
|
|
87
|
+
from nltk.classify.weka import WekaClassifier, config_weka
|
|
88
|
+
from nltk.classify.naivebayes import NaiveBayesClassifier
|
|
89
|
+
from nltk.classify.positivenaivebayes import PositiveNaiveBayesClassifier
|
|
90
|
+
from nltk.classify.decisiontree import DecisionTreeClassifier
|
|
91
|
+
from nltk.classify.rte_classify import rte_classifier, rte_features, RTEFeatureExtractor
|
|
92
|
+
from nltk.classify.util import accuracy, apply_features, log_likelihood
|
|
93
|
+
from nltk.classify.scikitlearn import SklearnClassifier
|
|
94
|
+
from nltk.classify.maxent import (MaxentClassifier, BinaryMaxentFeatureEncoding,
|
|
95
|
+
TypedMaxentFeatureEncoding,
|
|
96
|
+
ConditionalExponentialClassifier)
|
|
97
|
+
from nltk.classify.senna import Senna
|
|
98
|
+
from nltk.classify.textcat import TextCat
|
|
@@ -1,193 +1,193 @@
|
|
|
1
|
-
# Natural Language Toolkit: Classifier Interface
|
|
2
|
-
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
4
|
-
# Author: Edward Loper <edloper@gmail.com>
|
|
5
|
-
# Steven Bird <stevenbird1@gmail.com> (minor additions)
|
|
6
|
-
# URL: <http://nltk.org/>
|
|
7
|
-
# For license information, see LICENSE.TXT
|
|
8
|
-
|
|
9
|
-
"""
|
|
10
|
-
Interfaces for labeling tokens with category labels (or "class labels").
|
|
11
|
-
|
|
12
|
-
``ClassifierI`` is a standard interface for "single-category
|
|
13
|
-
classification", in which the set of categories is known, the number
|
|
14
|
-
of categories is finite, and each text belongs to exactly one
|
|
15
|
-
category.
|
|
16
|
-
|
|
17
|
-
``MultiClassifierI`` is a standard interface for "multi-category
|
|
18
|
-
classification", which is like single-category classification except
|
|
19
|
-
that each text belongs to zero or more categories.
|
|
20
|
-
"""
|
|
21
|
-
from nltk.internals import overridden
|
|
22
|
-
|
|
23
|
-
##//////////////////////////////////////////////////////
|
|
24
|
-
#{ Classification Interfaces
|
|
25
|
-
##//////////////////////////////////////////////////////
|
|
26
|
-
|
|
27
|
-
class ClassifierI(object):
|
|
28
|
-
"""
|
|
29
|
-
A processing interface for labeling tokens with a single category
|
|
30
|
-
label (or "class"). Labels are typically strs or
|
|
31
|
-
ints, but can be any immutable type. The set of labels
|
|
32
|
-
that the classifier chooses from must be fixed and finite.
|
|
33
|
-
|
|
34
|
-
Subclasses must define:
|
|
35
|
-
- ``labels()``
|
|
36
|
-
- either ``classify()`` or ``classify_many()`` (or both)
|
|
37
|
-
|
|
38
|
-
Subclasses may define:
|
|
39
|
-
- either ``prob_classify()`` or ``prob_classify_many()`` (or both)
|
|
40
|
-
"""
|
|
41
|
-
def labels(self):
|
|
42
|
-
"""
|
|
43
|
-
:return: the list of category labels used by this classifier.
|
|
44
|
-
:rtype: list of (immutable)
|
|
45
|
-
"""
|
|
46
|
-
raise NotImplementedError()
|
|
47
|
-
|
|
48
|
-
def classify(self, featureset):
|
|
49
|
-
"""
|
|
50
|
-
:return: the most appropriate label for the given featureset.
|
|
51
|
-
:rtype: label
|
|
52
|
-
"""
|
|
53
|
-
if overridden(self.classify_many):
|
|
54
|
-
return self.classify_many([featureset])[0]
|
|
55
|
-
else:
|
|
56
|
-
raise NotImplementedError()
|
|
57
|
-
|
|
58
|
-
def prob_classify(self, featureset):
|
|
59
|
-
"""
|
|
60
|
-
:return: a probability distribution over labels for the given
|
|
61
|
-
featureset.
|
|
62
|
-
:rtype: ProbDistI
|
|
63
|
-
"""
|
|
64
|
-
if overridden(self.prob_classify_many):
|
|
65
|
-
return self.prob_classify_many([featureset])[0]
|
|
66
|
-
else:
|
|
67
|
-
raise NotImplementedError()
|
|
68
|
-
|
|
69
|
-
def classify_many(self, featuresets):
|
|
70
|
-
"""
|
|
71
|
-
Apply ``self.classify()`` to each element of ``featuresets``. I.e.:
|
|
72
|
-
|
|
73
|
-
return [self.classify(fs) for fs in featuresets]
|
|
74
|
-
|
|
75
|
-
:rtype: list(label)
|
|
76
|
-
"""
|
|
77
|
-
return [self.classify(fs) for fs in featuresets]
|
|
78
|
-
|
|
79
|
-
def prob_classify_many(self, featuresets):
|
|
80
|
-
"""
|
|
81
|
-
Apply ``self.prob_classify()`` to each element of ``featuresets``. I.e.:
|
|
82
|
-
|
|
83
|
-
return [self.prob_classify(fs) for fs in featuresets]
|
|
84
|
-
|
|
85
|
-
:rtype: list(ProbDistI)
|
|
86
|
-
"""
|
|
87
|
-
return [self.prob_classify(fs) for fs in featuresets]
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
class MultiClassifierI(object):
|
|
91
|
-
"""
|
|
92
|
-
A processing interface for labeling tokens with zero or more
|
|
93
|
-
category labels (or "labels"). Labels are typically strs
|
|
94
|
-
or ints, but can be any immutable type. The set of labels
|
|
95
|
-
that the multi-classifier chooses from must be fixed and finite.
|
|
96
|
-
|
|
97
|
-
Subclasses must define:
|
|
98
|
-
- ``labels()``
|
|
99
|
-
- either ``classify()`` or ``classify_many()`` (or both)
|
|
100
|
-
|
|
101
|
-
Subclasses may define:
|
|
102
|
-
- either ``prob_classify()`` or ``prob_classify_many()`` (or both)
|
|
103
|
-
"""
|
|
104
|
-
def labels(self):
|
|
105
|
-
"""
|
|
106
|
-
:return: the list of category labels used by this classifier.
|
|
107
|
-
:rtype: list of (immutable)
|
|
108
|
-
"""
|
|
109
|
-
raise NotImplementedError()
|
|
110
|
-
|
|
111
|
-
def classify(self, featureset):
|
|
112
|
-
"""
|
|
113
|
-
:return: the most appropriate set of labels for the given featureset.
|
|
114
|
-
:rtype: set(label)
|
|
115
|
-
"""
|
|
116
|
-
if overridden(self.classify_many):
|
|
117
|
-
return self.classify_many([featureset])[0]
|
|
118
|
-
else:
|
|
119
|
-
raise NotImplementedError()
|
|
120
|
-
|
|
121
|
-
def prob_classify(self, featureset):
|
|
122
|
-
"""
|
|
123
|
-
:return: a probability distribution over sets of labels for the
|
|
124
|
-
given featureset.
|
|
125
|
-
:rtype: ProbDistI
|
|
126
|
-
"""
|
|
127
|
-
if overridden(self.prob_classify_many):
|
|
128
|
-
return self.prob_classify_many([featureset])[0]
|
|
129
|
-
else:
|
|
130
|
-
raise NotImplementedError()
|
|
131
|
-
|
|
132
|
-
def classify_many(self, featuresets):
|
|
133
|
-
"""
|
|
134
|
-
Apply ``self.classify()`` to each element of ``featuresets``. I.e.:
|
|
135
|
-
|
|
136
|
-
return [self.classify(fs) for fs in featuresets]
|
|
137
|
-
|
|
138
|
-
:rtype: list(set(label))
|
|
139
|
-
"""
|
|
140
|
-
return [self.classify(fs) for fs in featuresets]
|
|
141
|
-
|
|
142
|
-
def prob_classify_many(self, featuresets):
|
|
143
|
-
"""
|
|
144
|
-
Apply ``self.prob_classify()`` to each element of ``featuresets``. I.e.:
|
|
145
|
-
|
|
146
|
-
return [self.prob_classify(fs) for fs in featuresets]
|
|
147
|
-
|
|
148
|
-
:rtype: list(ProbDistI)
|
|
149
|
-
"""
|
|
150
|
-
return [self.prob_classify(fs) for fs in featuresets]
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
# # [XX] IN PROGRESS:
|
|
154
|
-
# class SequenceClassifierI(object):
|
|
155
|
-
# """
|
|
156
|
-
# A processing interface for labeling sequences of tokens with a
|
|
157
|
-
# single category label (or "class"). Labels are typically
|
|
158
|
-
# strs or ints, but can be any immutable type. The set
|
|
159
|
-
# of labels that the classifier chooses from must be fixed and
|
|
160
|
-
# finite.
|
|
161
|
-
# """
|
|
162
|
-
# def labels(self):
|
|
163
|
-
# """
|
|
164
|
-
# :return: the list of category labels used by this classifier.
|
|
165
|
-
# :rtype: list of (immutable)
|
|
166
|
-
# """
|
|
167
|
-
# raise NotImplementedError()
|
|
168
|
-
|
|
169
|
-
# def prob_classify(self, featureset):
|
|
170
|
-
# """
|
|
171
|
-
# Return a probability distribution over labels for the given
|
|
172
|
-
# featureset.
|
|
173
|
-
|
|
174
|
-
# If ``featureset`` is a list of featuresets, then return a
|
|
175
|
-
# corresponding list containing the probability distribution
|
|
176
|
-
# over labels for each of the given featuresets, where the
|
|
177
|
-
# *i*\ th element of this list is the most appropriate label for
|
|
178
|
-
# the *i*\ th element of ``featuresets``.
|
|
179
|
-
# """
|
|
180
|
-
# raise NotImplementedError()
|
|
181
|
-
|
|
182
|
-
# def classify(self, featureset):
|
|
183
|
-
# """
|
|
184
|
-
# Return the most appropriate label for the given featureset.
|
|
185
|
-
|
|
186
|
-
# If ``featureset`` is a list of featuresets, then return a
|
|
187
|
-
# corresponding list containing the most appropriate label for
|
|
188
|
-
# each of the given featuresets, where the *i*\ th element of
|
|
189
|
-
# this list is the most appropriate label for the *i*\ th element
|
|
190
|
-
# of ``featuresets``.
|
|
191
|
-
# """
|
|
192
|
-
# raise NotImplementedError()
|
|
193
|
-
|
|
1
|
+
# Natural Language Toolkit: Classifier Interface
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
|
+
# Author: Edward Loper <edloper@gmail.com>
|
|
5
|
+
# Steven Bird <stevenbird1@gmail.com> (minor additions)
|
|
6
|
+
# URL: <http://nltk.org/>
|
|
7
|
+
# For license information, see LICENSE.TXT
|
|
8
|
+
|
|
9
|
+
"""
|
|
10
|
+
Interfaces for labeling tokens with category labels (or "class labels").
|
|
11
|
+
|
|
12
|
+
``ClassifierI`` is a standard interface for "single-category
|
|
13
|
+
classification", in which the set of categories is known, the number
|
|
14
|
+
of categories is finite, and each text belongs to exactly one
|
|
15
|
+
category.
|
|
16
|
+
|
|
17
|
+
``MultiClassifierI`` is a standard interface for "multi-category
|
|
18
|
+
classification", which is like single-category classification except
|
|
19
|
+
that each text belongs to zero or more categories.
|
|
20
|
+
"""
|
|
21
|
+
from nltk.internals import overridden
|
|
22
|
+
|
|
23
|
+
##//////////////////////////////////////////////////////
|
|
24
|
+
#{ Classification Interfaces
|
|
25
|
+
##//////////////////////////////////////////////////////
|
|
26
|
+
|
|
27
|
+
class ClassifierI(object):
|
|
28
|
+
"""
|
|
29
|
+
A processing interface for labeling tokens with a single category
|
|
30
|
+
label (or "class"). Labels are typically strs or
|
|
31
|
+
ints, but can be any immutable type. The set of labels
|
|
32
|
+
that the classifier chooses from must be fixed and finite.
|
|
33
|
+
|
|
34
|
+
Subclasses must define:
|
|
35
|
+
- ``labels()``
|
|
36
|
+
- either ``classify()`` or ``classify_many()`` (or both)
|
|
37
|
+
|
|
38
|
+
Subclasses may define:
|
|
39
|
+
- either ``prob_classify()`` or ``prob_classify_many()`` (or both)
|
|
40
|
+
"""
|
|
41
|
+
def labels(self):
|
|
42
|
+
"""
|
|
43
|
+
:return: the list of category labels used by this classifier.
|
|
44
|
+
:rtype: list of (immutable)
|
|
45
|
+
"""
|
|
46
|
+
raise NotImplementedError()
|
|
47
|
+
|
|
48
|
+
def classify(self, featureset):
|
|
49
|
+
"""
|
|
50
|
+
:return: the most appropriate label for the given featureset.
|
|
51
|
+
:rtype: label
|
|
52
|
+
"""
|
|
53
|
+
if overridden(self.classify_many):
|
|
54
|
+
return self.classify_many([featureset])[0]
|
|
55
|
+
else:
|
|
56
|
+
raise NotImplementedError()
|
|
57
|
+
|
|
58
|
+
def prob_classify(self, featureset):
|
|
59
|
+
"""
|
|
60
|
+
:return: a probability distribution over labels for the given
|
|
61
|
+
featureset.
|
|
62
|
+
:rtype: ProbDistI
|
|
63
|
+
"""
|
|
64
|
+
if overridden(self.prob_classify_many):
|
|
65
|
+
return self.prob_classify_many([featureset])[0]
|
|
66
|
+
else:
|
|
67
|
+
raise NotImplementedError()
|
|
68
|
+
|
|
69
|
+
def classify_many(self, featuresets):
|
|
70
|
+
"""
|
|
71
|
+
Apply ``self.classify()`` to each element of ``featuresets``. I.e.:
|
|
72
|
+
|
|
73
|
+
return [self.classify(fs) for fs in featuresets]
|
|
74
|
+
|
|
75
|
+
:rtype: list(label)
|
|
76
|
+
"""
|
|
77
|
+
return [self.classify(fs) for fs in featuresets]
|
|
78
|
+
|
|
79
|
+
def prob_classify_many(self, featuresets):
|
|
80
|
+
"""
|
|
81
|
+
Apply ``self.prob_classify()`` to each element of ``featuresets``. I.e.:
|
|
82
|
+
|
|
83
|
+
return [self.prob_classify(fs) for fs in featuresets]
|
|
84
|
+
|
|
85
|
+
:rtype: list(ProbDistI)
|
|
86
|
+
"""
|
|
87
|
+
return [self.prob_classify(fs) for fs in featuresets]
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class MultiClassifierI(object):
|
|
91
|
+
"""
|
|
92
|
+
A processing interface for labeling tokens with zero or more
|
|
93
|
+
category labels (or "labels"). Labels are typically strs
|
|
94
|
+
or ints, but can be any immutable type. The set of labels
|
|
95
|
+
that the multi-classifier chooses from must be fixed and finite.
|
|
96
|
+
|
|
97
|
+
Subclasses must define:
|
|
98
|
+
- ``labels()``
|
|
99
|
+
- either ``classify()`` or ``classify_many()`` (or both)
|
|
100
|
+
|
|
101
|
+
Subclasses may define:
|
|
102
|
+
- either ``prob_classify()`` or ``prob_classify_many()`` (or both)
|
|
103
|
+
"""
|
|
104
|
+
def labels(self):
|
|
105
|
+
"""
|
|
106
|
+
:return: the list of category labels used by this classifier.
|
|
107
|
+
:rtype: list of (immutable)
|
|
108
|
+
"""
|
|
109
|
+
raise NotImplementedError()
|
|
110
|
+
|
|
111
|
+
def classify(self, featureset):
|
|
112
|
+
"""
|
|
113
|
+
:return: the most appropriate set of labels for the given featureset.
|
|
114
|
+
:rtype: set(label)
|
|
115
|
+
"""
|
|
116
|
+
if overridden(self.classify_many):
|
|
117
|
+
return self.classify_many([featureset])[0]
|
|
118
|
+
else:
|
|
119
|
+
raise NotImplementedError()
|
|
120
|
+
|
|
121
|
+
def prob_classify(self, featureset):
|
|
122
|
+
"""
|
|
123
|
+
:return: a probability distribution over sets of labels for the
|
|
124
|
+
given featureset.
|
|
125
|
+
:rtype: ProbDistI
|
|
126
|
+
"""
|
|
127
|
+
if overridden(self.prob_classify_many):
|
|
128
|
+
return self.prob_classify_many([featureset])[0]
|
|
129
|
+
else:
|
|
130
|
+
raise NotImplementedError()
|
|
131
|
+
|
|
132
|
+
def classify_many(self, featuresets):
|
|
133
|
+
"""
|
|
134
|
+
Apply ``self.classify()`` to each element of ``featuresets``. I.e.:
|
|
135
|
+
|
|
136
|
+
return [self.classify(fs) for fs in featuresets]
|
|
137
|
+
|
|
138
|
+
:rtype: list(set(label))
|
|
139
|
+
"""
|
|
140
|
+
return [self.classify(fs) for fs in featuresets]
|
|
141
|
+
|
|
142
|
+
def prob_classify_many(self, featuresets):
|
|
143
|
+
"""
|
|
144
|
+
Apply ``self.prob_classify()`` to each element of ``featuresets``. I.e.:
|
|
145
|
+
|
|
146
|
+
return [self.prob_classify(fs) for fs in featuresets]
|
|
147
|
+
|
|
148
|
+
:rtype: list(ProbDistI)
|
|
149
|
+
"""
|
|
150
|
+
return [self.prob_classify(fs) for fs in featuresets]
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# # [XX] IN PROGRESS:
|
|
154
|
+
# class SequenceClassifierI(object):
|
|
155
|
+
# """
|
|
156
|
+
# A processing interface for labeling sequences of tokens with a
|
|
157
|
+
# single category label (or "class"). Labels are typically
|
|
158
|
+
# strs or ints, but can be any immutable type. The set
|
|
159
|
+
# of labels that the classifier chooses from must be fixed and
|
|
160
|
+
# finite.
|
|
161
|
+
# """
|
|
162
|
+
# def labels(self):
|
|
163
|
+
# """
|
|
164
|
+
# :return: the list of category labels used by this classifier.
|
|
165
|
+
# :rtype: list of (immutable)
|
|
166
|
+
# """
|
|
167
|
+
# raise NotImplementedError()
|
|
168
|
+
|
|
169
|
+
# def prob_classify(self, featureset):
|
|
170
|
+
# """
|
|
171
|
+
# Return a probability distribution over labels for the given
|
|
172
|
+
# featureset.
|
|
173
|
+
|
|
174
|
+
# If ``featureset`` is a list of featuresets, then return a
|
|
175
|
+
# corresponding list containing the probability distribution
|
|
176
|
+
# over labels for each of the given featuresets, where the
|
|
177
|
+
# *i*\ th element of this list is the most appropriate label for
|
|
178
|
+
# the *i*\ th element of ``featuresets``.
|
|
179
|
+
# """
|
|
180
|
+
# raise NotImplementedError()
|
|
181
|
+
|
|
182
|
+
# def classify(self, featureset):
|
|
183
|
+
# """
|
|
184
|
+
# Return the most appropriate label for the given featureset.
|
|
185
|
+
|
|
186
|
+
# If ``featureset`` is a list of featuresets, then return a
|
|
187
|
+
# corresponding list containing the most appropriate label for
|
|
188
|
+
# each of the given featuresets, where the *i*\ th element of
|
|
189
|
+
# this list is the most appropriate label for the *i*\ th element
|
|
190
|
+
# of ``featuresets``.
|
|
191
|
+
# """
|
|
192
|
+
# raise NotImplementedError()
|
|
193
|
+
|