nltk 3.2.1__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.1 → nltk-3.3}/LICENSE.txt +1 -1
- {nltk-3.2.1/nltk.egg-info → nltk-3.3}/PKG-INFO +13 -5
- nltk-3.3/README.md +49 -0
- nltk-3.3/nltk/VERSION +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/__init__.py +3 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/app/__init__.py +2 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/app/chartparser_app.py +92 -92
- {nltk-3.2.1 → nltk-3.3}/nltk/app/chunkparser_app.py +11 -13
- {nltk-3.2.1 → nltk-3.3}/nltk/app/collocations_app.py +8 -11
- {nltk-3.2.1 → nltk-3.3}/nltk/app/concordance_app.py +9 -11
- {nltk-3.2.1 → nltk-3.3}/nltk/app/nemo_app.py +18 -17
- {nltk-3.2.1 → nltk-3.3}/nltk/app/rdparser_app.py +10 -12
- {nltk-3.2.1 → nltk-3.3}/nltk/app/srparser_app.py +16 -16
- {nltk-3.2.1 → nltk-3.3}/nltk/app/wordfreq_app.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/app/wordnet_app.py +11 -11
- {nltk-3.2.1 → nltk-3.3}/nltk/book.py +2 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/ccg/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/ccg/api.py +67 -47
- {nltk-3.2.1 → nltk-3.3}/nltk/ccg/chart.py +7 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/ccg/combinator.py +42 -11
- {nltk-3.2.1 → nltk-3.3}/nltk/ccg/lexicon.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/ccg/logic.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chat/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chat/eliza.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chat/iesha.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chat/rude.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chat/suntsu.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chat/util.py +12 -10
- {nltk-3.2.1 → nltk-3.3}/nltk/chat/zen.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chunk/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chunk/api.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/chunk/named_entity.py +13 -13
- {nltk-3.2.1 → nltk-3.3}/nltk/chunk/regexp.py +9 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/chunk/util.py +12 -12
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/api.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/decisiontree.py +18 -18
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/maxent.py +26 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/megam.py +5 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/naivebayes.py +29 -26
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/rte_classify.py +58 -89
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/scikitlearn.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/senna.py +24 -22
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/svm.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/tadm.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/textcat.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/util.py +13 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/weka.py +7 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/cluster/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/cluster/api.py +9 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/cluster/em.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/cluster/gaac.py +3 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/cluster/kmeans.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/cluster/util.py +35 -20
- nltk-3.3/nltk/collections.py +640 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/collocations.py +2 -2
- nltk-3.3/nltk/compat.py +365 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/__init__.py +37 -16
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/europarl_raw.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/__init__.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/aligned.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/api.py +12 -10
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/bnc.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/bracket_parse.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/categorized_sents.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/chasen.py +5 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/childes.py +8 -9
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/chunked.py +4 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/cmudict.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/comparative_sents.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/conll.py +19 -12
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/crubadan.py +2 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/dependency.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/framenet.py +1085 -119
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ieer.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/indian.py +4 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ipipan.py +6 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/knbc.py +2 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/lin.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/mte.py +5 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/nkjp.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/nombank.py +8 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/nps_chat.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/opinion_lexicon.py +3 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/panlex_lite.py +1 -1
- nltk-3.3/nltk/corpus/reader/pl196x.py +292 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/plaintext.py +3 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ppattach.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/propbank.py +8 -10
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/pros_cons.py +5 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/reviews.py +3 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/rte.py +5 -7
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/semcor.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/senseval.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/sentiwordnet.py +3 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/sinica_treebank.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/string_category.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/switchboard.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/tagged.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/timit.py +10 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/toolbox.py +4 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/twitter.py +4 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/util.py +7 -3
- nltk-3.3/nltk/corpus/reader/verbnet.py +595 -0
- nltk-3.3/nltk/corpus/reader/wordlist.py +134 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/wordnet.py +357 -285
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/xmldocs.py +10 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ycoe.py +25 -24
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/util.py +22 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/data.py +65 -29
- {nltk-3.2.1 → nltk-3.3}/nltk/decorators.py +5 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/downloader.py +59 -55
- {nltk-3.2.1 → nltk-3.3}/nltk/draw/__init__.py +4 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/draw/cfg.py +5 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/draw/dispersion.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/draw/table.py +4 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/draw/tree.py +2 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/draw/util.py +17 -17
- {nltk-3.2.1 → nltk-3.3}/nltk/featstruct.py +290 -173
- {nltk-3.2.1 → nltk-3.3}/nltk/grammar.py +87 -44
- {nltk-3.2.1 → nltk-3.3}/nltk/help.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/api.py +27 -19
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/discourse.py +20 -16
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/nonmonotonic.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/prover9.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/resolution.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/tableau.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/internals.py +44 -44
- {nltk-3.2.1 → nltk-3.3}/nltk/jsontags.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/__init__.py +2 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/agreement.py +29 -9
- nltk-3.3/nltk/metrics/aline.py +607 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/association.py +8 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/confusionmatrix.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/distance.py +12 -7
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/paice.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/scores.py +7 -7
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/segmentation.py +4 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/metrics/spearman.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/misc/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/misc/chomsky.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/misc/minimalset.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/misc/sort.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/misc/wordfinder.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/__init__.py +2 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/api.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/bllip.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/chart.py +8 -7
- nltk-3.3/nltk/parse/corenlp.py +780 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/dependencygraph.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/earleychart.py +4 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/evaluate.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/featurechart.py +6 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/generate.py +15 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/malt.py +2 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/nonprojectivedependencyparser.py +3 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/pchart.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/projectivedependencyparser.py +6 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/recursivedescent.py +2 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/shiftreduce.py +2 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/stanford.py +53 -28
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/transitionparser.py +11 -9
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/util.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/parse/viterbi.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/probability.py +75 -20
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/boxer.py +15 -15
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/chat80.py +6 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/cooper_storage.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/drt.py +9 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/drt_glue_demo.py +5 -9
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/evaluate.py +9 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/glue.py +8 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/hole.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/lfg.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/linearlogic.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/logic.py +14 -14
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/relextract.py +11 -18
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/skolemize.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/sem/util.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/sentiment_analyzer.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/util.py +14 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/vader.py +41 -42
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/__init__.py +1 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/api.py +7 -4
- nltk-3.3/nltk/stem/arlstem.py +369 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/isri.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/lancaster.py +39 -12
- nltk-3.3/nltk/stem/porter.py +710 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/regexp.py +2 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/rslp.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/snowball.py +537 -13
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/util.py +11 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/stem/wordnet.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/__init__.py +32 -7
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/api.py +13 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/brill.py +4 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/crf.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/hmm.py +11 -11
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/hunpos.py +4 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/mapping.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/perceptron.py +25 -10
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/senna.py +25 -23
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/sequential.py +19 -15
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/stanford.py +59 -36
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/tnt.py +11 -20
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/util.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tbl/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tbl/demo.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tbl/erroranalysis.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tbl/feature.py +5 -7
- {nltk-3.2.1 → nltk-3.3}/nltk/tbl/rule.py +6 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/tbl/template.py +18 -23
- {nltk-3.2.1 → nltk-3.3}/nltk/test/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/all.py +7 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/test/bnc.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/ccg.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/ccg_semantics.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/chat80.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/childes_fixt.py +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/chunk.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/classify.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/classify_fixt.py +2 -1
- nltk-3.3/nltk/test/collections.doctest +20 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/collocations.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/compat.doctest +0 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/test/compat_fixt.py +1 -0
- nltk-3.3/nltk/test/concordance.doctest +55 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/corpus.doctest +38 -49
- {nltk-3.2.1 → nltk-3.3}/nltk/test/crubadan.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/data.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/dependency.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/discourse.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/discourse_fixt.py +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/doctest_nose_plugin.py +8 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/test/drt.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/featgram.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/featstruct.doctest +2 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/test/framenet.doctest +82 -33
- {nltk-3.2.1 → nltk-3.3}/nltk/test/generate.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/gensim.doctest +6 -7
- {nltk-3.2.1 → nltk-3.3}/nltk/test/gensim_fixt.py +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/gluesemantics.doctest +13 -15
- {nltk-3.2.1 → nltk-3.3}/nltk/test/gluesemantics_malt.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/gluesemantics_malt_fixt.py +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/grammar.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/grammartestsuites.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/index.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/inference.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/inference_fixt.py +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/internals.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/japanese.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/logic.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/metrics.doctest +3 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/test/misc.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/nonmonotonic.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/nonmonotonic_fixt.py +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/parse.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/portuguese_en.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/probability.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/probability_fixt.py +2 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/propbank.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/relextract.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/resolution.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/runtests.py +35 -13
- {nltk-3.2.1 → nltk-3.3}/nltk/test/semantics.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/sentiment.doctest +3 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/test/sentiwordnet.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/simple.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/stem.doctest +2 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/test/tag.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/tokenize.doctest +109 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/test/toolbox.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/translate.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/tree.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/treeprettyprinter.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/treetransforms.doctest +1 -1
- 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.1 → nltk-3.3}/nltk/test/unit/test_classify.py +20 -18
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_collocations.py +16 -7
- 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.1 → nltk-3.3}/nltk/test/unit/test_corpora.py +18 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_json2csv_corpus.py +4 -3
- nltk-3.3/nltk/test/unit/test_rte_classify.py +86 -0
- 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.1 → nltk-3.3}/nltk/test/unit/test_tgrep.py +4 -2
- nltk-3.3/nltk/test/unit/test_tokenize.py +168 -0
- 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.3/nltk/test/unit/translate/test_nist.py +37 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_stack_decoder.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/util.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/wordnet.doctest +17 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/test/wordnet_fixt.py +1 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/wordnet_lch.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/test/wsd.doctest +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/text.py +92 -39
- {nltk-3.2.1 → nltk-3.3}/nltk/tgrep.py +8 -7
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/__init__.py +37 -15
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/api.py +3 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/casual.py +10 -9
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/mwe.py +2 -2
- nltk-3.3/nltk/tokenize/nist.py +173 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/punkt.py +186 -167
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/regexp.py +13 -7
- nltk-3.3/nltk/tokenize/repp.py +151 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/sexpr.py +4 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/simple.py +7 -5
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/stanford.py +18 -14
- nltk-3.3/nltk/tokenize/stanford_segmenter.py +246 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/texttiling.py +43 -45
- 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.1 → nltk-3.3}/nltk/toolbox.py +4 -2
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/api.py +50 -40
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/bleu_score.py +221 -156
- nltk-3.3/nltk/translate/chrf_score.py +137 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/gale_church.py +32 -19
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/gdfa.py +14 -10
- nltk-3.3/nltk/translate/gleu_score.py +193 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm1.py +17 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm2.py +4 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm4.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm5.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm_model.py +4 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/metrics.py +1 -1
- nltk-3.3/nltk/translate/nist_score.py +178 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/phrase_based.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/ribes_score.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/stack_decoder.py +5 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/tree.py +10 -8
- {nltk-3.2.1 → nltk-3.3}/nltk/treeprettyprinter.py +6 -6
- {nltk-3.2.1 → nltk-3.3}/nltk/twitter/__init__.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/twitter/api.py +8 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/twitter/common.py +9 -3
- {nltk-3.2.1 → nltk-3.3}/nltk/twitter/twitter_demo.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/twitter/twitterclient.py +1 -1
- {nltk-3.2.1 → nltk-3.3}/nltk/twitter/util.py +5 -4
- {nltk-3.2.1 → nltk-3.3}/nltk/util.py +41 -654
- {nltk-3.2.1 → nltk-3.3}/nltk/wsd.py +2 -2
- {nltk-3.2.1 → nltk-3.3/nltk.egg-info}/PKG-INFO +13 -5
- {nltk-3.2.1 → nltk-3.3}/nltk.egg-info/SOURCES.txt +23 -1
- nltk-3.3/nltk.egg-info/requires.txt +31 -0
- {nltk-3.2.1 → nltk-3.3}/setup.cfg +0 -1
- {nltk-3.2.1 → nltk-3.3}/setup.py +32 -5
- nltk-3.2.1/nltk/VERSION +0 -1
- nltk-3.2.1/nltk/compat.py +0 -706
- nltk-3.2.1/nltk/corpus/reader/pl196x.py +0 -278
- nltk-3.2.1/nltk/corpus/reader/verbnet.py +0 -408
- nltk-3.2.1/nltk/corpus/reader/wordlist.py +0 -37
- nltk-3.2.1/nltk/six.py +0 -868
- nltk-3.2.1/nltk/stem/porter.py +0 -692
- nltk-3.2.1/nltk/test/unit/test_stem.py +0 -36
- nltk-3.2.1/nltk/test/unit/test_tokenize.py +0 -23
- nltk-3.2.1/nltk/test/unit/translate/test_bleu.py +0 -138
- nltk-3.2.1/nltk/tokenize/stanford_segmenter.py +0 -157
- nltk-3.2.1/nltk/tokenize/treebank.py +0 -124
- nltk-3.2.1/nltk/tokenize/util.py +0 -90
- {nltk-3.2.1 → nltk-3.3}/INSTALL.txt +0 -0
- {nltk-3.2.1 → nltk-3.3}/MANIFEST.in +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/classify/positivenaivebayes.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/udhr.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/inference/mace.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/lazyimport.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/misc/babelfish.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/tag/brill_trainer.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/tbl/api.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/bleu.doctest +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/childes.doctest +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/corpus_fixt.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/paice.doctest +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/portuguese_en_fixt.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/segmentation_fixt.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/semantics_fixt.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/translate_fixt.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/__init__.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_2x_compat.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_corpus_views.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_hmm.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_naivebayes.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_seekable_unicode_stream_reader.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_tag.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_twitter_auth.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/__init__.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm1.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm2.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm3.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm4.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm5.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm_model.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/utils.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm3.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk/treetransforms.py +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk.egg-info/dependency_links.txt +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk.egg-info/not-zip-safe +0 -0
- {nltk-3.2.1 → nltk-3.3}/nltk.egg-info/top_level.txt +0 -0
|
@@ -43,6 +43,8 @@ The set of all threads for a discourse is the Cartesian product of all the readi
|
|
|
43
43
|
those threads which are consistent (taking into account any background assumptions).
|
|
44
44
|
"""
|
|
45
45
|
from __future__ import print_function
|
|
46
|
+
from abc import ABCMeta, abstractmethod
|
|
47
|
+
from six import add_metaclass
|
|
46
48
|
import os
|
|
47
49
|
|
|
48
50
|
from operator import and_, add
|
|
@@ -60,13 +62,14 @@ from nltk.inference.mace import MaceCommand
|
|
|
60
62
|
from nltk.inference.prover9 import Prover9Command
|
|
61
63
|
|
|
62
64
|
|
|
65
|
+
@add_metaclass(ABCMeta)
|
|
63
66
|
class ReadingCommand(object):
|
|
67
|
+
@abstractmethod
|
|
64
68
|
def parse_to_readings(self, sentence):
|
|
65
69
|
"""
|
|
66
70
|
:param sentence: the sentence to read
|
|
67
71
|
:type sentence: str
|
|
68
72
|
"""
|
|
69
|
-
raise NotImplementedError()
|
|
70
73
|
|
|
71
74
|
def process_thread(self, sentence_readings):
|
|
72
75
|
"""
|
|
@@ -80,6 +83,7 @@ class ReadingCommand(object):
|
|
|
80
83
|
"""
|
|
81
84
|
return sentence_readings
|
|
82
85
|
|
|
86
|
+
@abstractmethod
|
|
83
87
|
def combine_readings(self, readings):
|
|
84
88
|
"""
|
|
85
89
|
:param readings: readings to combine
|
|
@@ -87,8 +91,8 @@ class ReadingCommand(object):
|
|
|
87
91
|
:return: one combined reading
|
|
88
92
|
:rtype: Expression
|
|
89
93
|
"""
|
|
90
|
-
raise NotImplementedError()
|
|
91
94
|
|
|
95
|
+
@abstractmethod
|
|
92
96
|
def to_fol(self, expression):
|
|
93
97
|
"""
|
|
94
98
|
Convert this expression into a First-Order Logic expression.
|
|
@@ -98,7 +102,6 @@ class ReadingCommand(object):
|
|
|
98
102
|
:return: a FOL version of the input expression
|
|
99
103
|
:rtype: Expression
|
|
100
104
|
"""
|
|
101
|
-
raise NotImplementedError()
|
|
102
105
|
|
|
103
106
|
|
|
104
107
|
class CfgReadingCommand(ReadingCommand):
|
|
@@ -299,7 +302,6 @@ class DiscourseTester(object):
|
|
|
299
302
|
if (tid, True) in consistency_checked:
|
|
300
303
|
self._filtered_threads[tid] = thread
|
|
301
304
|
|
|
302
|
-
|
|
303
305
|
def _show_readings(self, sentence=None):
|
|
304
306
|
"""
|
|
305
307
|
Print out the readings for the discourse (or a single sentence).
|
|
@@ -492,6 +494,7 @@ class DiscourseTester(object):
|
|
|
492
494
|
#L2 = ['a', 'b', 'c']
|
|
493
495
|
#print multiply(L1,L2)
|
|
494
496
|
|
|
497
|
+
|
|
495
498
|
def load_fol(s):
|
|
496
499
|
"""
|
|
497
500
|
Temporarily duplicated from ``nltk.sem.util``.
|
|
@@ -505,17 +508,18 @@ def load_fol(s):
|
|
|
505
508
|
statements = []
|
|
506
509
|
for linenum, line in enumerate(s.splitlines()):
|
|
507
510
|
line = line.strip()
|
|
508
|
-
if line.startswith('#') or line=='':
|
|
511
|
+
if line.startswith('#') or line == '':
|
|
512
|
+
continue
|
|
509
513
|
try:
|
|
510
514
|
statements.append(Expression.fromstring(line))
|
|
511
515
|
except Exception:
|
|
512
516
|
raise ValueError('Unable to parse line %s: %s' % (linenum, line))
|
|
513
517
|
return statements
|
|
514
518
|
|
|
519
|
+
|
|
515
520
|
###############################
|
|
516
521
|
# Demo
|
|
517
522
|
###############################
|
|
518
|
-
|
|
519
523
|
def discourse_demo(reading_command=None):
|
|
520
524
|
"""
|
|
521
525
|
Illustrate the various methods of ``DiscourseTester``
|
|
@@ -524,7 +528,7 @@ def discourse_demo(reading_command=None):
|
|
|
524
528
|
reading_command)
|
|
525
529
|
dt.models()
|
|
526
530
|
print()
|
|
527
|
-
#dt.grammar()
|
|
531
|
+
# dt.grammar()
|
|
528
532
|
print()
|
|
529
533
|
dt.sentences()
|
|
530
534
|
print()
|
|
@@ -555,12 +559,12 @@ def discourse_demo(reading_command=None):
|
|
|
555
559
|
dt.add_sentence('A person dances', informchk=True)
|
|
556
560
|
dt = DiscourseTester(['Vincent is a boxer', 'Fido is a boxer',
|
|
557
561
|
'Vincent is married', 'Fido barks'],
|
|
558
|
-
|
|
562
|
+
reading_command)
|
|
559
563
|
dt.readings(filter=True)
|
|
560
564
|
import nltk.data
|
|
561
565
|
background_file = os.path.join('grammars', 'book_grammars', 'background.fol')
|
|
562
566
|
background = nltk.data.load(background_file)
|
|
563
|
-
|
|
567
|
+
|
|
564
568
|
print()
|
|
565
569
|
dt.add_background(background, verbose=False)
|
|
566
570
|
dt.background()
|
|
@@ -590,19 +594,19 @@ def drt_discourse_demo(reading_command=None):
|
|
|
590
594
|
def spacer(num=30):
|
|
591
595
|
print('-' * num)
|
|
592
596
|
|
|
597
|
+
|
|
593
598
|
def demo():
|
|
594
599
|
discourse_demo()
|
|
595
600
|
|
|
596
|
-
tagger = RegexpTagger(
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
('^(he)$', 'PRP')
|
|
602
|
-
])
|
|
601
|
+
tagger = RegexpTagger([('^(chases|runs)$', 'VB'),
|
|
602
|
+
('^(a)$', 'ex_quant'),
|
|
603
|
+
('^(every)$', 'univ_quant'),
|
|
604
|
+
('^(dog|boy)$', 'NN'),
|
|
605
|
+
('^(he)$', 'PRP')])
|
|
603
606
|
depparser = MaltParser(tagger=tagger)
|
|
604
607
|
drt_discourse_demo(DrtGlueReadingCommand(remove_duplicates=False,
|
|
605
608
|
depparser=depparser))
|
|
606
609
|
|
|
610
|
+
|
|
607
611
|
if __name__ == '__main__':
|
|
608
612
|
demo()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Internal utility functions
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Steven Bird <stevenbird1@gmail.com>
|
|
5
5
|
# Edward Loper <edloper@gmail.com>
|
|
6
6
|
# Nitin Madnani <nmadnani@ets.org>
|
|
@@ -25,6 +25,8 @@ try:
|
|
|
25
25
|
except ImportError:
|
|
26
26
|
from xml.etree import ElementTree
|
|
27
27
|
|
|
28
|
+
from six import string_types
|
|
29
|
+
|
|
28
30
|
from nltk import __file__
|
|
29
31
|
from nltk import compat
|
|
30
32
|
|
|
@@ -35,7 +37,7 @@ from nltk import compat
|
|
|
35
37
|
_java_bin = None
|
|
36
38
|
_java_options = []
|
|
37
39
|
# [xx] add classpath option to config_java?
|
|
38
|
-
def config_java(bin=None, options=None, verbose=
|
|
40
|
+
def config_java(bin=None, options=None, verbose=False):
|
|
39
41
|
"""
|
|
40
42
|
Configure nltk's java interface, by letting nltk know where it can
|
|
41
43
|
find the Java binary, and what extra options (if any) should be
|
|
@@ -56,7 +58,7 @@ def config_java(bin=None, options=None, verbose=True):
|
|
|
56
58
|
_java_bin = find_binary('java', bin, env_vars=['JAVAHOME', 'JAVA_HOME'], verbose=verbose, binary_names=['java.exe'])
|
|
57
59
|
|
|
58
60
|
if options is not None:
|
|
59
|
-
if isinstance(options,
|
|
61
|
+
if isinstance(options, string_types):
|
|
60
62
|
options = options.split()
|
|
61
63
|
_java_options = list(options)
|
|
62
64
|
|
|
@@ -104,7 +106,7 @@ def java(cmd, classpath=None, stdin=None, stdout=None, stderr=None,
|
|
|
104
106
|
if stdin == 'pipe': stdin = subprocess.PIPE
|
|
105
107
|
if stdout == 'pipe': stdout = subprocess.PIPE
|
|
106
108
|
if stderr == 'pipe': stderr = subprocess.PIPE
|
|
107
|
-
if isinstance(cmd,
|
|
109
|
+
if isinstance(cmd, string_types):
|
|
108
110
|
raise TypeError('cmd should be a list of strings')
|
|
109
111
|
|
|
110
112
|
# Make sure we know where a java binary is.
|
|
@@ -112,7 +114,7 @@ def java(cmd, classpath=None, stdin=None, stdout=None, stderr=None,
|
|
|
112
114
|
config_java()
|
|
113
115
|
|
|
114
116
|
# Set up the classpath.
|
|
115
|
-
if isinstance(classpath,
|
|
117
|
+
if isinstance(classpath, string_types):
|
|
116
118
|
classpaths=[classpath]
|
|
117
119
|
else:
|
|
118
120
|
classpaths=list(classpath)
|
|
@@ -173,21 +175,21 @@ def read_str(s, start_position):
|
|
|
173
175
|
containing the value of the string literal and the position where
|
|
174
176
|
it ends. Otherwise, raise a ``ReadError``.
|
|
175
177
|
|
|
176
|
-
:param s: A string that will be checked to see if within which a
|
|
178
|
+
:param s: A string that will be checked to see if within which a
|
|
177
179
|
Python string literal exists.
|
|
178
180
|
:type s: str
|
|
179
|
-
|
|
181
|
+
|
|
180
182
|
:param start_position: The specified beginning position of the string ``s``
|
|
181
183
|
to begin regex matching.
|
|
182
184
|
:type start_position: int
|
|
183
|
-
|
|
184
|
-
:return: A tuple containing the matched string literal evaluated as a
|
|
185
|
+
|
|
186
|
+
:return: A tuple containing the matched string literal evaluated as a
|
|
185
187
|
string and the end position of the string literal.
|
|
186
188
|
:rtype: tuple(str, int)
|
|
187
189
|
|
|
188
190
|
:raise ReadError: If the ``_STRING_START_RE`` regex doesn't return a
|
|
189
|
-
match in ``s`` at ``start_position``, i.e., open quote. If the
|
|
190
|
-
``_STRING_END_RE`` regex doesn't return a match in ``s`` at the
|
|
191
|
+
match in ``s`` at ``start_position``, i.e., open quote. If the
|
|
192
|
+
``_STRING_END_RE`` regex doesn't return a match in ``s`` at the
|
|
191
193
|
end of the first match, i.e., close quote.
|
|
192
194
|
:raise ValueError: If an invalid string (i.e., contains an invalid
|
|
193
195
|
escape sequence) is passed into the ``eval``.
|
|
@@ -227,14 +229,14 @@ def read_int(s, start_position):
|
|
|
227
229
|
value of the integer and the position where it ends. Otherwise,
|
|
228
230
|
raise a ``ReadError``.
|
|
229
231
|
|
|
230
|
-
:param s: A string that will be checked to see if within which a
|
|
232
|
+
:param s: A string that will be checked to see if within which a
|
|
231
233
|
Python integer exists.
|
|
232
234
|
:type s: str
|
|
233
|
-
|
|
235
|
+
|
|
234
236
|
:param start_position: The specified beginning position of the string ``s``
|
|
235
237
|
to begin regex matching.
|
|
236
238
|
:type start_position: int
|
|
237
|
-
|
|
239
|
+
|
|
238
240
|
:return: A tuple containing the matched integer casted to an int,
|
|
239
241
|
and the end position of the int in ``s``.
|
|
240
242
|
:rtype: tuple(int, int)
|
|
@@ -246,7 +248,7 @@ def read_int(s, start_position):
|
|
|
246
248
|
>>> from nltk.internals import read_int
|
|
247
249
|
>>> read_int('42 is the answer', 0)
|
|
248
250
|
(42, 2)
|
|
249
|
-
|
|
251
|
+
|
|
250
252
|
"""
|
|
251
253
|
m = _READ_INT_RE.match(s, start_position)
|
|
252
254
|
if not m: raise ReadError('integer', start_position)
|
|
@@ -260,14 +262,14 @@ def read_number(s, start_position):
|
|
|
260
262
|
containing the value of the number and the position where it ends.
|
|
261
263
|
Otherwise, raise a ``ReadError``.
|
|
262
264
|
|
|
263
|
-
:param s: A string that will be checked to see if within which a
|
|
265
|
+
:param s: A string that will be checked to see if within which a
|
|
264
266
|
Python number exists.
|
|
265
267
|
:type s: str
|
|
266
|
-
|
|
268
|
+
|
|
267
269
|
:param start_position: The specified beginning position of the string ``s``
|
|
268
270
|
to begin regex matching.
|
|
269
271
|
:type start_position: int
|
|
270
|
-
|
|
272
|
+
|
|
271
273
|
:return: A tuple containing the matched number casted to a ``float``,
|
|
272
274
|
and the end position of the number in ``s``.
|
|
273
275
|
:rtype: tuple(float, int)
|
|
@@ -279,7 +281,7 @@ def read_number(s, start_position):
|
|
|
279
281
|
>>> from nltk.internals import read_number
|
|
280
282
|
>>> read_number('Pi is 3.14159', 6)
|
|
281
283
|
(3.14159, 13)
|
|
282
|
-
|
|
284
|
+
|
|
283
285
|
"""
|
|
284
286
|
m = _READ_NUMBER_VALUE.match(s, start_position)
|
|
285
287
|
if not m or not (m.group(1) or m.group(2)):
|
|
@@ -451,7 +453,7 @@ class Counter:
|
|
|
451
453
|
##########################################################################
|
|
452
454
|
|
|
453
455
|
def find_file_iter(filename, env_vars=(), searchpath=(),
|
|
454
|
-
file_names=None, url=None, verbose=
|
|
456
|
+
file_names=None, url=None, verbose=False, finding_dir=False):
|
|
455
457
|
"""
|
|
456
458
|
Search for a file to be used by nltk.
|
|
457
459
|
|
|
@@ -463,10 +465,10 @@ def find_file_iter(filename, env_vars=(), searchpath=(),
|
|
|
463
465
|
:param verbose: Whether or not to print path when a file is found.
|
|
464
466
|
"""
|
|
465
467
|
file_names = [filename] + (file_names or [])
|
|
466
|
-
assert isinstance(filename,
|
|
467
|
-
assert not isinstance(file_names,
|
|
468
|
-
assert not isinstance(searchpath,
|
|
469
|
-
if isinstance(env_vars,
|
|
468
|
+
assert isinstance(filename, string_types)
|
|
469
|
+
assert not isinstance(file_names, string_types)
|
|
470
|
+
assert not isinstance(searchpath, string_types)
|
|
471
|
+
if isinstance(env_vars, string_types):
|
|
470
472
|
env_vars = env_vars.split()
|
|
471
473
|
yielded = False
|
|
472
474
|
|
|
@@ -498,7 +500,7 @@ def find_file_iter(filename, env_vars=(), searchpath=(),
|
|
|
498
500
|
if finding_dir: # This is to file a directory instead of file
|
|
499
501
|
yielded = True
|
|
500
502
|
yield os.environ[env_var]
|
|
501
|
-
|
|
503
|
+
|
|
502
504
|
for env_dir in os.environ[env_var].split(os.pathsep):
|
|
503
505
|
# Check if the environment variable contains a direct path to the bin
|
|
504
506
|
if os.path.isfile(env_dir):
|
|
@@ -568,19 +570,19 @@ def find_file_iter(filename, env_vars=(), searchpath=(),
|
|
|
568
570
|
|
|
569
571
|
|
|
570
572
|
def find_file(filename, env_vars=(), searchpath=(),
|
|
571
|
-
file_names=None, url=None, verbose=
|
|
573
|
+
file_names=None, url=None, verbose=False):
|
|
572
574
|
return next(find_file_iter(filename, env_vars, searchpath,
|
|
573
575
|
file_names, url, verbose))
|
|
574
576
|
|
|
575
577
|
|
|
576
578
|
def find_dir(filename, env_vars=(), searchpath=(),
|
|
577
|
-
file_names=None, url=None, verbose=
|
|
579
|
+
file_names=None, url=None, verbose=False):
|
|
578
580
|
return next(find_file_iter(filename, env_vars, searchpath,
|
|
579
581
|
file_names, url, verbose, finding_dir=True))
|
|
580
582
|
|
|
581
583
|
|
|
582
584
|
def find_binary_iter(name, path_to_bin=None, env_vars=(), searchpath=(),
|
|
583
|
-
binary_names=None, url=None, verbose=
|
|
585
|
+
binary_names=None, url=None, verbose=False):
|
|
584
586
|
"""
|
|
585
587
|
Search for a file to be used by nltk.
|
|
586
588
|
|
|
@@ -597,12 +599,12 @@ def find_binary_iter(name, path_to_bin=None, env_vars=(), searchpath=(),
|
|
|
597
599
|
yield file
|
|
598
600
|
|
|
599
601
|
def find_binary(name, path_to_bin=None, env_vars=(), searchpath=(),
|
|
600
|
-
binary_names=None, url=None, verbose=
|
|
602
|
+
binary_names=None, url=None, verbose=False):
|
|
601
603
|
return next(find_binary_iter(name, path_to_bin, env_vars, searchpath,
|
|
602
604
|
binary_names, url, verbose))
|
|
603
605
|
|
|
604
606
|
def find_jar_iter(name_pattern, path_to_jar=None, env_vars=(),
|
|
605
|
-
searchpath=(), url=None, verbose=
|
|
607
|
+
searchpath=(), url=None, verbose=False, is_regex=False):
|
|
606
608
|
"""
|
|
607
609
|
Search for a jar that is used by nltk.
|
|
608
610
|
|
|
@@ -615,9 +617,9 @@ def find_jar_iter(name_pattern, path_to_jar=None, env_vars=(),
|
|
|
615
617
|
:param is_regex: Whether name is a regular expression.
|
|
616
618
|
"""
|
|
617
619
|
|
|
618
|
-
assert isinstance(name_pattern,
|
|
619
|
-
assert not isinstance(searchpath,
|
|
620
|
-
if isinstance(env_vars,
|
|
620
|
+
assert isinstance(name_pattern, string_types)
|
|
621
|
+
assert not isinstance(searchpath, string_types)
|
|
622
|
+
if isinstance(env_vars, string_types):
|
|
621
623
|
env_vars = env_vars.split()
|
|
622
624
|
yielded = False
|
|
623
625
|
|
|
@@ -648,7 +650,7 @@ def find_jar_iter(name_pattern, path_to_jar=None, env_vars=(),
|
|
|
648
650
|
print('[Found %s: %s]' % (name_pattern, cp))
|
|
649
651
|
yielded = True
|
|
650
652
|
yield cp
|
|
651
|
-
# The case where user put directory containing the jar file in the classpath
|
|
653
|
+
# The case where user put directory containing the jar file in the classpath
|
|
652
654
|
if os.path.isdir(cp):
|
|
653
655
|
if not is_regex:
|
|
654
656
|
if os.path.isfile(os.path.join(cp,name_pattern)):
|
|
@@ -657,14 +659,14 @@ def find_jar_iter(name_pattern, path_to_jar=None, env_vars=(),
|
|
|
657
659
|
yielded = True
|
|
658
660
|
yield os.path.join(cp,name_pattern)
|
|
659
661
|
else:
|
|
660
|
-
# Look for file using regular expression
|
|
662
|
+
# Look for file using regular expression
|
|
661
663
|
for file_name in os.listdir(cp):
|
|
662
664
|
if re.match(name_pattern,file_name):
|
|
663
665
|
if verbose:
|
|
664
666
|
print('[Found %s: %s]' % (name_pattern, os.path.join(cp,file_name)))
|
|
665
667
|
yielded = True
|
|
666
668
|
yield os.path.join(cp,file_name)
|
|
667
|
-
|
|
669
|
+
|
|
668
670
|
else:
|
|
669
671
|
jar_env = os.environ[env_var]
|
|
670
672
|
jar_iter = ((os.path.join(jar_env, path_to_jar) for path_to_jar in os.listdir(jar_env))
|
|
@@ -714,21 +716,21 @@ def find_jar_iter(name_pattern, path_to_jar=None, env_vars=(),
|
|
|
714
716
|
raise LookupError('\n\n%s\n%s\n%s' % (div, msg, div))
|
|
715
717
|
|
|
716
718
|
def find_jar(name_pattern, path_to_jar=None, env_vars=(),
|
|
717
|
-
searchpath=(), url=None, verbose=
|
|
719
|
+
searchpath=(), url=None, verbose=False, is_regex=False):
|
|
718
720
|
return next(find_jar_iter(name_pattern, path_to_jar, env_vars,
|
|
719
721
|
searchpath, url, verbose, is_regex))
|
|
720
722
|
|
|
721
|
-
|
|
723
|
+
|
|
722
724
|
def find_jars_within_path(path_to_jars):
|
|
723
|
-
return [os.path.join(root, filename)
|
|
724
|
-
for root, dirnames, filenames in os.walk(path_to_jars)
|
|
725
|
+
return [os.path.join(root, filename)
|
|
726
|
+
for root, dirnames, filenames in os.walk(path_to_jars)
|
|
725
727
|
for filename in fnmatch.filter(filenames, '*.jar')]
|
|
726
728
|
|
|
727
729
|
def _decode_stdoutdata(stdoutdata):
|
|
728
730
|
""" Convert data read from stdout/stderr to unicode """
|
|
729
731
|
if not isinstance(stdoutdata, bytes):
|
|
730
732
|
return stdoutdata
|
|
731
|
-
|
|
733
|
+
|
|
732
734
|
encoding = getattr(sys.__stdout__, "encoding", locale.getpreferredencoding())
|
|
733
735
|
if encoding is None:
|
|
734
736
|
return stdoutdata.decode()
|
|
@@ -795,7 +797,7 @@ class ElementWrapper(object):
|
|
|
795
797
|
<Element "<?xml version='1.0' encoding='utf8'?>\n<test />">
|
|
796
798
|
|
|
797
799
|
"""
|
|
798
|
-
if isinstance(etree,
|
|
800
|
+
if isinstance(etree, string_types):
|
|
799
801
|
etree = ElementTree.fromstring(etree)
|
|
800
802
|
self.__dict__['_etree'] = etree
|
|
801
803
|
|
|
@@ -978,5 +980,3 @@ def is_writable(path):
|
|
|
978
980
|
|
|
979
981
|
def raise_unorderable_types(ordering, a, b):
|
|
980
982
|
raise TypeError("unorderable types: %s() %s %s()" % (type(a).__name__, ordering, type(b).__name__))
|
|
981
|
-
|
|
982
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Metrics
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Steven Bird <stevenbird1@gmail.com>
|
|
5
5
|
# Edward Loper <edloper@gmail.com>
|
|
6
6
|
# URL: <http://nltk.org/>
|
|
@@ -27,3 +27,4 @@ from nltk.metrics.association import (NgramAssocMeasures, BigramAssocMeasure
|
|
|
27
27
|
TrigramAssocMeasures, ContingencyMeasures)
|
|
28
28
|
from nltk.metrics.spearman import (spearman_correlation, ranks_from_sequence,
|
|
29
29
|
ranks_from_scores)
|
|
30
|
+
from nltk.metrics.aline import align
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Agreement Metrics
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Tom Lippincott <tom@cs.columbia.edu>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -74,9 +74,11 @@ import logging
|
|
|
74
74
|
from itertools import groupby
|
|
75
75
|
from operator import itemgetter
|
|
76
76
|
|
|
77
|
+
from six import iteritems
|
|
78
|
+
|
|
77
79
|
from nltk.probability import FreqDist, ConditionalFreqDist
|
|
78
80
|
from nltk.internals import deprecated
|
|
79
|
-
from nltk.compat import python_2_unicode_compatible
|
|
81
|
+
from nltk.compat import python_2_unicode_compatible
|
|
80
82
|
|
|
81
83
|
from nltk.metrics.distance import binary_distance
|
|
82
84
|
|
|
@@ -97,8 +99,15 @@ class AnnotationTask(object):
|
|
|
97
99
|
"""
|
|
98
100
|
|
|
99
101
|
def __init__(self, data=None, distance=binary_distance):
|
|
100
|
-
"""Initialize an
|
|
102
|
+
"""Initialize an annotation task.
|
|
103
|
+
|
|
104
|
+
The data argument can be None (to create an empty annotation task) or a sequence of 3-tuples,
|
|
105
|
+
each representing a coder's labeling of an item:
|
|
106
|
+
(coder,item,label)
|
|
101
107
|
|
|
108
|
+
The distance argument is a function taking two arguments (labels) and producing a numerical distance.
|
|
109
|
+
The distance from a label to itself should be zero:
|
|
110
|
+
distance(l,l) = 0
|
|
102
111
|
"""
|
|
103
112
|
self.distance = distance
|
|
104
113
|
self.I = set()
|
|
@@ -114,9 +123,9 @@ class AnnotationTask(object):
|
|
|
114
123
|
",".join(x['labels'])), self.data))
|
|
115
124
|
|
|
116
125
|
def load_array(self, array):
|
|
117
|
-
"""Load
|
|
126
|
+
"""Load an sequence of annotation results, appending to any data already loaded.
|
|
118
127
|
|
|
119
|
-
The argument is a
|
|
128
|
+
The argument is a sequence of 3-tuples, each representing a coder's labeling of an item:
|
|
120
129
|
(coder,item,label)
|
|
121
130
|
"""
|
|
122
131
|
for coder, item, labels in array:
|
|
@@ -304,6 +313,15 @@ class AnnotationTask(object):
|
|
|
304
313
|
"""Krippendorff 1980
|
|
305
314
|
|
|
306
315
|
"""
|
|
316
|
+
# check for degenerate cases
|
|
317
|
+
if len(self.K)==0:
|
|
318
|
+
raise ValueError("Cannot calculate alpha, no data present!")
|
|
319
|
+
if len(self.K) == 1:
|
|
320
|
+
log.debug("Only one annotation value, allpha returning 1.")
|
|
321
|
+
return 1
|
|
322
|
+
if len(self.C)==1 and len(self.I) == 1:
|
|
323
|
+
raise ValueError("Cannot calculate alpha, only one coder and item present!")
|
|
324
|
+
|
|
307
325
|
De = 0.0
|
|
308
326
|
|
|
309
327
|
label_freqs = FreqDist(x['labels'] for x in self.data)
|
|
@@ -311,9 +329,12 @@ class AnnotationTask(object):
|
|
|
311
329
|
nj = label_freqs[j]
|
|
312
330
|
for l in self.K:
|
|
313
331
|
De += float(nj * label_freqs[l]) * self.distance(j, l)
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
332
|
+
try:
|
|
333
|
+
De = (1.0 / (len(self.I) * len(self.C) * (len(self.I) * len(self.C) - 1))) * De
|
|
334
|
+
log.debug("Expected disagreement: %f", De)
|
|
335
|
+
ret = 1.0 - (self.Do_alpha() / De)
|
|
336
|
+
except ZeroDivisionError:
|
|
337
|
+
raise ValueError("Cannot calculate alpha, expected disagreement zero, check the distance function!")
|
|
317
338
|
return ret
|
|
318
339
|
|
|
319
340
|
def weighted_kappa_pairwise(self, cA, cB, max_distance=1.0):
|
|
@@ -398,4 +419,3 @@ if __name__ == '__main__':
|
|
|
398
419
|
print(getattr(task, options.agreement)())
|
|
399
420
|
|
|
400
421
|
logging.shutdown()
|
|
401
|
-
|