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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Combinatory Categorial Grammar
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Graeme Gange <ggange@csse.unimelb.edu.au>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -33,6 +33,8 @@ from __future__ import print_function, division, unicode_literals
|
|
|
33
33
|
|
|
34
34
|
import itertools
|
|
35
35
|
|
|
36
|
+
from six import string_types
|
|
37
|
+
|
|
36
38
|
from nltk.parse import ParserI
|
|
37
39
|
from nltk.parse.chart import AbstractChartRule, EdgeI, Chart
|
|
38
40
|
from nltk.tree import Tree
|
|
@@ -42,7 +44,7 @@ from nltk.ccg.combinator import (ForwardT, BackwardT, ForwardApplication,
|
|
|
42
44
|
BackwardApplication, ForwardComposition,
|
|
43
45
|
BackwardComposition, ForwardSubstitution,
|
|
44
46
|
BackwardBx, BackwardSx)
|
|
45
|
-
from nltk.compat import python_2_unicode_compatible
|
|
47
|
+
from nltk.compat import python_2_unicode_compatible
|
|
46
48
|
from nltk.ccg.combinator import *
|
|
47
49
|
from nltk.ccg.logic import *
|
|
48
50
|
from nltk.sem.logic import *
|
|
@@ -264,11 +266,11 @@ class CCGChart(Chart):
|
|
|
264
266
|
memo[edge] = trees
|
|
265
267
|
return trees
|
|
266
268
|
|
|
267
|
-
|
|
269
|
+
|
|
268
270
|
def compute_semantics(children, edge):
|
|
269
271
|
if children[0].label()[0].semantics() is None:
|
|
270
272
|
return None
|
|
271
|
-
|
|
273
|
+
|
|
272
274
|
if len(children) is 2:
|
|
273
275
|
if isinstance(edge.rule(), BackwardCombinator):
|
|
274
276
|
children = [children[1],children[0]]
|
|
@@ -335,7 +337,7 @@ def printCCGTree(lwidth,tree):
|
|
|
335
337
|
|
|
336
338
|
(token, op) = tree.label()
|
|
337
339
|
|
|
338
|
-
if op ==
|
|
340
|
+
if op == 'Leaf':
|
|
339
341
|
return rwidth
|
|
340
342
|
|
|
341
343
|
# Pad to the left with spaces, followed by a sequence of '-'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Combinatory Categorial Grammar
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Graeme Gange <ggange@csse.unimelb.edu.au>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -9,10 +9,14 @@ CCG Combinators
|
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
from __future__ import unicode_literals
|
|
12
|
+
from abc import ABCMeta, abstractmethod
|
|
13
|
+
from six import add_metaclass
|
|
12
14
|
|
|
13
15
|
from nltk.compat import python_2_unicode_compatible
|
|
14
16
|
from nltk.ccg.api import FunctionalCategory
|
|
15
17
|
|
|
18
|
+
|
|
19
|
+
@add_metaclass(ABCMeta)
|
|
16
20
|
class UndirectedBinaryCombinator(object):
|
|
17
21
|
"""
|
|
18
22
|
Abstract class for representing a binary combinator.
|
|
@@ -24,12 +28,16 @@ class UndirectedBinaryCombinator(object):
|
|
|
24
28
|
of the combinators; these restrictions must be added in the rule
|
|
25
29
|
class.
|
|
26
30
|
"""
|
|
31
|
+
@abstractmethod
|
|
27
32
|
def can_combine(self, function, argument):
|
|
28
|
-
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
@abstractmethod
|
|
36
|
+
def combine(self, function, argument):
|
|
37
|
+
pass
|
|
29
38
|
|
|
30
|
-
def combine (self, function, argument):
|
|
31
|
-
raise NotImplementedError()
|
|
32
39
|
|
|
40
|
+
@add_metaclass(ABCMeta)
|
|
33
41
|
class DirectedBinaryCombinator(object):
|
|
34
42
|
"""
|
|
35
43
|
Wrapper for the undirected binary combinator.
|
|
@@ -37,11 +45,14 @@ class DirectedBinaryCombinator(object):
|
|
|
37
45
|
the function, and which the argument.
|
|
38
46
|
It then decides whether or not they can be combined.
|
|
39
47
|
"""
|
|
48
|
+
@abstractmethod
|
|
40
49
|
def can_combine(self, left, right):
|
|
41
|
-
|
|
50
|
+
pass
|
|
42
51
|
|
|
52
|
+
@abstractmethod
|
|
43
53
|
def combine(self, left, right):
|
|
44
|
-
|
|
54
|
+
pass
|
|
55
|
+
|
|
45
56
|
|
|
46
57
|
@python_2_unicode_compatible
|
|
47
58
|
class ForwardCombinator(DirectedBinaryCombinator):
|
|
@@ -67,6 +78,7 @@ class ForwardCombinator(DirectedBinaryCombinator):
|
|
|
67
78
|
def __str__(self):
|
|
68
79
|
return ">%s%s" % (self._combinator, self._suffix)
|
|
69
80
|
|
|
81
|
+
|
|
70
82
|
@python_2_unicode_compatible
|
|
71
83
|
class BackwardCombinator(DirectedBinaryCombinator):
|
|
72
84
|
"""
|
|
@@ -80,6 +92,7 @@ class BackwardCombinator(DirectedBinaryCombinator):
|
|
|
80
92
|
def can_combine(self, left, right):
|
|
81
93
|
return (self._combinator.can_combine(right, left) and
|
|
82
94
|
self._predicate(left, right))
|
|
95
|
+
|
|
83
96
|
def combine(self, left, right):
|
|
84
97
|
for cat in self._combinator.combine(right, left):
|
|
85
98
|
yield cat
|
|
@@ -87,6 +100,7 @@ class BackwardCombinator(DirectedBinaryCombinator):
|
|
|
87
100
|
def __str__(self):
|
|
88
101
|
return "<%s%s" % (self._combinator, self._suffix)
|
|
89
102
|
|
|
103
|
+
|
|
90
104
|
@python_2_unicode_compatible
|
|
91
105
|
class UndirectedFunctionApplication(UndirectedBinaryCombinator):
|
|
92
106
|
"""
|
|
@@ -122,10 +136,12 @@ class UndirectedFunctionApplication(UndirectedBinaryCombinator):
|
|
|
122
136
|
def forwardOnly(left, right):
|
|
123
137
|
return left.dir().is_forward()
|
|
124
138
|
|
|
139
|
+
|
|
125
140
|
# Ensures the right functor takes an argument on the left
|
|
126
141
|
def backwardOnly(left, right):
|
|
127
142
|
return right.dir().is_backward()
|
|
128
143
|
|
|
144
|
+
|
|
129
145
|
# Application combinator instances
|
|
130
146
|
ForwardApplication = ForwardCombinator(UndirectedFunctionApplication(),
|
|
131
147
|
forwardOnly)
|
|
@@ -155,25 +171,29 @@ class UndirectedComposition(UndirectedBinaryCombinator):
|
|
|
155
171
|
return
|
|
156
172
|
if function.dir().can_compose() and argument.dir().can_compose():
|
|
157
173
|
subs = function.arg().can_unify(argument.res())
|
|
158
|
-
if
|
|
174
|
+
if subs is not None:
|
|
159
175
|
yield FunctionalCategory(function.res().substitute(subs),
|
|
160
|
-
argument.arg().substitute(subs),
|
|
176
|
+
argument.arg().substitute(subs),
|
|
177
|
+
argument.dir())
|
|
161
178
|
|
|
162
179
|
def __str__(self):
|
|
163
180
|
return 'B'
|
|
164
181
|
|
|
182
|
+
|
|
165
183
|
# Predicates for restricting application of straight composition.
|
|
166
184
|
def bothForward(left, right):
|
|
167
185
|
return left.dir().is_forward() and right.dir().is_forward()
|
|
168
186
|
|
|
187
|
+
|
|
169
188
|
def bothBackward(left, right):
|
|
170
189
|
return left.dir().is_backward() and right.dir().is_backward()
|
|
171
190
|
|
|
172
|
-
# Predicates for crossed composition
|
|
173
191
|
|
|
192
|
+
# Predicates for crossed composition
|
|
174
193
|
def crossedDirs(left, right):
|
|
175
194
|
return left.dir().is_forward() and right.dir().is_backward()
|
|
176
195
|
|
|
196
|
+
|
|
177
197
|
def backwardBxConstraint(left, right):
|
|
178
198
|
# The functors must be crossed inwards
|
|
179
199
|
if not crossedDirs(left, right):
|
|
@@ -184,6 +204,7 @@ def backwardBxConstraint(left, right):
|
|
|
184
204
|
# The resulting argument category is restricted to be primitive
|
|
185
205
|
return left.arg().is_primitive()
|
|
186
206
|
|
|
207
|
+
|
|
187
208
|
# Straight composition combinators
|
|
188
209
|
ForwardComposition = ForwardCombinator(UndirectedComposition(),
|
|
189
210
|
forwardOnly)
|
|
@@ -194,6 +215,7 @@ BackwardComposition = BackwardCombinator(UndirectedComposition(),
|
|
|
194
215
|
BackwardBx = BackwardCombinator(UndirectedComposition(), backwardBxConstraint,
|
|
195
216
|
suffix='x')
|
|
196
217
|
|
|
218
|
+
|
|
197
219
|
@python_2_unicode_compatible
|
|
198
220
|
class UndirectedSubstitution(UndirectedBinaryCombinator):
|
|
199
221
|
"""
|
|
@@ -219,17 +241,20 @@ class UndirectedSubstitution(UndirectedBinaryCombinator):
|
|
|
219
241
|
|
|
220
242
|
def combine(self, function, argument):
|
|
221
243
|
if self.can_combine(function, argument):
|
|
222
|
-
yield FunctionalCategory(function.res().res(), argument.arg(),
|
|
244
|
+
yield FunctionalCategory(function.res().res(), argument.arg(),
|
|
245
|
+
argument.dir())
|
|
223
246
|
|
|
224
247
|
def __str__(self):
|
|
225
248
|
return 'S'
|
|
226
249
|
|
|
250
|
+
|
|
227
251
|
# Predicate for forward substitution
|
|
228
252
|
def forwardSConstraint(left, right):
|
|
229
253
|
if not bothForward(left, right):
|
|
230
254
|
return False
|
|
231
255
|
return left.res().dir().is_forward() and left.arg().is_primitive()
|
|
232
256
|
|
|
257
|
+
|
|
233
258
|
# Predicate for backward crossed substitution
|
|
234
259
|
def backwardSxConstraint(left, right):
|
|
235
260
|
if not left.dir().can_cross() and right.dir().can_cross():
|
|
@@ -238,6 +263,7 @@ def backwardSxConstraint(left, right):
|
|
|
238
263
|
return False
|
|
239
264
|
return right.res().dir().is_backward() and right.arg().is_primitive()
|
|
240
265
|
|
|
266
|
+
|
|
241
267
|
# Instances of substitution combinators
|
|
242
268
|
ForwardSubstitution = ForwardCombinator(UndirectedSubstitution(),
|
|
243
269
|
forwardSConstraint)
|
|
@@ -252,6 +278,7 @@ def innermostFunction(categ):
|
|
|
252
278
|
categ = categ.res()
|
|
253
279
|
return categ
|
|
254
280
|
|
|
281
|
+
|
|
255
282
|
@python_2_unicode_compatible
|
|
256
283
|
class UndirectedTypeRaise(UndirectedBinaryCombinator):
|
|
257
284
|
"""
|
|
@@ -288,12 +315,14 @@ class UndirectedTypeRaise(UndirectedBinaryCombinator):
|
|
|
288
315
|
if subs is not None:
|
|
289
316
|
xcat = arg.res().substitute(subs)
|
|
290
317
|
yield FunctionalCategory(xcat,
|
|
291
|
-
FunctionalCategory(xcat, function,
|
|
318
|
+
FunctionalCategory(xcat, function,
|
|
319
|
+
arg.dir()),
|
|
292
320
|
-(arg.dir()))
|
|
293
321
|
|
|
294
322
|
def __str__(self):
|
|
295
323
|
return 'T'
|
|
296
324
|
|
|
325
|
+
|
|
297
326
|
# Predicates for type-raising
|
|
298
327
|
# The direction of the innermost category must be towards
|
|
299
328
|
# the primary functor.
|
|
@@ -303,10 +332,12 @@ def forwardTConstraint(left, right):
|
|
|
303
332
|
arg = innermostFunction(right)
|
|
304
333
|
return arg.dir().is_backward() and arg.res().is_primitive()
|
|
305
334
|
|
|
335
|
+
|
|
306
336
|
def backwardTConstraint(left, right):
|
|
307
337
|
arg = innermostFunction(left)
|
|
308
338
|
return arg.dir().is_forward() and arg.res().is_primitive()
|
|
309
339
|
|
|
340
|
+
|
|
310
341
|
# Instances of type-raising combinators
|
|
311
342
|
ForwardT = ForwardCombinator(UndirectedTypeRaise(), forwardTConstraint)
|
|
312
343
|
BackwardT = BackwardCombinator(UndirectedTypeRaise(), backwardTConstraint)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Combinatory Categorial Grammar
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Graeme Gange <ggange@csse.unimelb.edu.au>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Chatbot Utilities
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Authors: Steven Bird <stevenbird1@gmail.com>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -11,7 +11,9 @@ from __future__ import print_function
|
|
|
11
11
|
|
|
12
12
|
import re
|
|
13
13
|
import random
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
from six.moves import input
|
|
16
|
+
|
|
15
17
|
|
|
16
18
|
reflections = {
|
|
17
19
|
"i am" : "you are",
|
|
@@ -109,12 +111,12 @@ class Chat(object):
|
|
|
109
111
|
|
|
110
112
|
# Hold a conversation with a chatbot
|
|
111
113
|
def converse(self, quit="quit"):
|
|
112
|
-
|
|
113
|
-
while
|
|
114
|
-
|
|
115
|
-
try:
|
|
114
|
+
user_input = ""
|
|
115
|
+
while user_input != quit:
|
|
116
|
+
user_input = quit
|
|
117
|
+
try: user_input = input(">")
|
|
116
118
|
except EOFError:
|
|
117
|
-
print(
|
|
118
|
-
if
|
|
119
|
-
while
|
|
120
|
-
print(self.respond(
|
|
119
|
+
print(user_input)
|
|
120
|
+
if user_input:
|
|
121
|
+
while user_input[-1] in "!.": user_input = user_input[:-1]
|
|
122
|
+
print(self.respond(user_input))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Chunk parsing API
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Edward Loper <edloper@gmail.com>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
Named entity chunker
|
|
10
10
|
"""
|
|
11
11
|
from __future__ import print_function
|
|
12
|
+
from __future__ import unicode_literals
|
|
12
13
|
|
|
13
14
|
import os, re, pickle
|
|
14
15
|
from xml.etree import ElementTree as ET
|
|
@@ -101,9 +102,9 @@ class NEChunkParserTagger(ClassifierBasedTagger):
|
|
|
101
102
|
'nextpos': nextpos,
|
|
102
103
|
'prevword': prevword,
|
|
103
104
|
'nextword': nextword,
|
|
104
|
-
'word+nextpos': '
|
|
105
|
-
'pos+prevtag': '
|
|
106
|
-
'shape+prevtag': '
|
|
105
|
+
'word+nextpos': '{0}+{1}'.format(word.lower(), nextpos),
|
|
106
|
+
'pos+prevtag': '{0}+{1}'.format(pos, prevtag),
|
|
107
|
+
'shape+prevtag': '{0}+{1}'.format(prevshape, prevtag),
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
return features
|
|
@@ -159,9 +160,9 @@ class NEChunkParser(ChunkParserI):
|
|
|
159
160
|
if len(child) == 0:
|
|
160
161
|
print("Warning -- empty chunk in sentence")
|
|
161
162
|
continue
|
|
162
|
-
toks.append((child[0], 'B
|
|
163
|
+
toks.append((child[0], 'B-{0}'.format(child.label())))
|
|
163
164
|
for tok in child[1:]:
|
|
164
|
-
toks.append((tok, 'I
|
|
165
|
+
toks.append((tok, 'I-{0}'.format(child.label())))
|
|
165
166
|
else:
|
|
166
167
|
toks.append((child, 'O'))
|
|
167
168
|
return toks
|
|
@@ -210,7 +211,7 @@ def load_ace_data(roots, fmt='binary', skip_bnews=True):
|
|
|
210
211
|
yield sent
|
|
211
212
|
|
|
212
213
|
def load_ace_file(textfile, fmt):
|
|
213
|
-
print(' -
|
|
214
|
+
print(' - {0}'.format(os.path.split(textfile)[1]))
|
|
214
215
|
annfile = textfile+'.tmx.rdc.xml'
|
|
215
216
|
|
|
216
217
|
# Read the xml file, and get a list of entities
|
|
@@ -281,12 +282,12 @@ def cmp_chunks(correct, guessed):
|
|
|
281
282
|
for (w, ct), (w, gt) in zip(correct, guessed):
|
|
282
283
|
if ct == gt == 'O':
|
|
283
284
|
if not ellipsis:
|
|
284
|
-
print("
|
|
285
|
-
print('
|
|
285
|
+
print(" {:15} {:15} {2}".format(ct, gt, w))
|
|
286
|
+
print(' {:15} {:15} {2}'.format('...', '...', '...'))
|
|
286
287
|
ellipsis = True
|
|
287
288
|
else:
|
|
288
289
|
ellipsis = False
|
|
289
|
-
print("
|
|
290
|
+
print(" {:15} {:15} {2}".format(ct, gt, w))
|
|
290
291
|
|
|
291
292
|
def build_model(fmt='binary'):
|
|
292
293
|
print('Loading training data...')
|
|
@@ -313,8 +314,8 @@ def build_model(fmt='binary'):
|
|
|
313
314
|
if i < 3: cmp_chunks(correct, guess)
|
|
314
315
|
print(chunkscore)
|
|
315
316
|
|
|
316
|
-
outfilename = '/tmp/ne_chunker_
|
|
317
|
-
print('Saving chunker to
|
|
317
|
+
outfilename = '/tmp/ne_chunker_{0}.pickle'.format(fmt)
|
|
318
|
+
print('Saving chunker to {0}...'.format(outfilename))
|
|
318
319
|
|
|
319
320
|
with open(outfilename, 'wb') as outfile:
|
|
320
321
|
pickle.dump(cp, outfile, -1)
|
|
@@ -328,4 +329,3 @@ if __name__ == '__main__':
|
|
|
328
329
|
|
|
329
330
|
build_model('binary')
|
|
330
331
|
build_model('multiclass')
|
|
331
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Regular Expression Chunkers
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Edward Loper <edloper@gmail.com>
|
|
5
5
|
# Steven Bird <stevenbird1@gmail.com> (minor additions)
|
|
6
6
|
# URL: <http://nltk.org/>
|
|
@@ -10,9 +10,11 @@ from __future__ import division
|
|
|
10
10
|
|
|
11
11
|
import re
|
|
12
12
|
|
|
13
|
+
from six import string_types
|
|
14
|
+
|
|
13
15
|
from nltk.tree import Tree
|
|
14
16
|
from nltk.chunk.api import ChunkParserI
|
|
15
|
-
from nltk.compat import python_2_unicode_compatible,
|
|
17
|
+
from nltk.compat import python_2_unicode_compatible, unicode_repr
|
|
16
18
|
|
|
17
19
|
##//////////////////////////////////////////////////////
|
|
18
20
|
## ChunkString
|
|
@@ -829,9 +831,13 @@ class ChunkRuleWithContext(RegexpChunkRule):
|
|
|
829
831
|
# this should probably be made more strict than it is -- e.g., it
|
|
830
832
|
# currently accepts 'foo'.
|
|
831
833
|
CHUNK_TAG_PATTERN = re.compile(r'^((%s|<%s>)*)$' %
|
|
832
|
-
('[^\{\}<>]+',
|
|
834
|
+
('([^\{\}<>]|\{\d+,?\}|\{\d*,\d+\})+',
|
|
833
835
|
'[^\{\}<>]+'))
|
|
834
836
|
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
835
841
|
def tag_pattern2re_pattern(tag_pattern):
|
|
836
842
|
"""
|
|
837
843
|
Convert a tag pattern to a regular expression pattern. A "tag
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Chunk format conversions
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Edward Loper <edloper@gmail.com>
|
|
5
5
|
# Steven Bird <stevenbird1@gmail.com> (minor additions)
|
|
6
6
|
# URL: <http://nltk.org/>
|
|
@@ -288,10 +288,10 @@ class ChunkScore(object):
|
|
|
288
288
|
:rtype: str
|
|
289
289
|
"""
|
|
290
290
|
return ("ChunkParse score:\n" +
|
|
291
|
-
(" IOB Accuracy:
|
|
292
|
-
(" Precision:
|
|
293
|
-
(" Recall:
|
|
294
|
-
(" F-Measure:
|
|
291
|
+
(" IOB Accuracy: {:5.1f}%%\n".format(self.accuracy()*100)) +
|
|
292
|
+
(" Precision: {:5.1f}%%\n".format(self.precision()*100)) +
|
|
293
|
+
(" Recall: {:5.1f}%%\n".format(self.recall()*100))+
|
|
294
|
+
(" F-Measure: {:5.1f}%%".format(self.f_measure()*100)))
|
|
295
295
|
|
|
296
296
|
# extract chunks, and assign unique id, the absolute position of
|
|
297
297
|
# the first word of the chunk
|
|
@@ -334,13 +334,13 @@ def tagstr2tree(s, chunk_label="NP", root_label="S", sep='/',
|
|
|
334
334
|
text = match.group()
|
|
335
335
|
if text[0] == '[':
|
|
336
336
|
if len(stack) != 1:
|
|
337
|
-
raise ValueError('Unexpected [ at char
|
|
337
|
+
raise ValueError('Unexpected [ at char {:d}'.format(match.start()))
|
|
338
338
|
chunk = Tree(chunk_label, [])
|
|
339
339
|
stack[-1].append(chunk)
|
|
340
340
|
stack.append(chunk)
|
|
341
341
|
elif text[0] == ']':
|
|
342
342
|
if len(stack) != 2:
|
|
343
|
-
raise ValueError('Unexpected ] at char
|
|
343
|
+
raise ValueError('Unexpected ] at char {:d}'.format(match.start()))
|
|
344
344
|
stack.pop()
|
|
345
345
|
else:
|
|
346
346
|
if sep is None:
|
|
@@ -352,7 +352,7 @@ def tagstr2tree(s, chunk_label="NP", root_label="S", sep='/',
|
|
|
352
352
|
stack[-1].append((word, tag))
|
|
353
353
|
|
|
354
354
|
if len(stack) != 1:
|
|
355
|
-
raise ValueError('Expected ] at char
|
|
355
|
+
raise ValueError('Expected ] at char {:d}'.format(len(s)))
|
|
356
356
|
return stack[0]
|
|
357
357
|
|
|
358
358
|
### CONLL
|
|
@@ -384,7 +384,7 @@ def conllstr2tree(s, chunk_types=('NP', 'PP', 'VP'), root_label="S"):
|
|
|
384
384
|
# Decode the line.
|
|
385
385
|
match = _LINE_RE.match(line)
|
|
386
386
|
if match is None:
|
|
387
|
-
raise ValueError('Error on line
|
|
387
|
+
raise ValueError('Error on line {:d}'.format(lineno))
|
|
388
388
|
(word, tag, state, chunk_type) = match.groups()
|
|
389
389
|
|
|
390
390
|
# If it's a chunk type we don't care about, treat it as O.
|
|
@@ -461,7 +461,7 @@ def conlltags2tree(sentence, chunk_types=('NP','PP','VP'),
|
|
|
461
461
|
elif chunktag == 'O':
|
|
462
462
|
tree.append((word,postag))
|
|
463
463
|
else:
|
|
464
|
-
raise ValueError("Bad conll tag
|
|
464
|
+
raise ValueError("Bad conll tag {0!r}".format(chunktag))
|
|
465
465
|
return tree
|
|
466
466
|
|
|
467
467
|
def tree2conllstr(t):
|
|
@@ -512,8 +512,8 @@ def _ieer_read_text(s, root_label):
|
|
|
512
512
|
else:
|
|
513
513
|
stack[-1].append(piece)
|
|
514
514
|
except (IndexError, ValueError):
|
|
515
|
-
raise ValueError('Bad IEER string (error at character
|
|
516
|
-
piece_m.start())
|
|
515
|
+
raise ValueError('Bad IEER string (error at character {:d})'.format \
|
|
516
|
+
(piece_m.start()))
|
|
517
517
|
if len(stack) != 1:
|
|
518
518
|
raise ValueError('Bad IEER string')
|
|
519
519
|
return stack[0]
|