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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# Author: Dan Garrette <dhgarrette@gmail.com>
|
|
4
4
|
#
|
|
5
|
-
# Copyright (C) 2001-
|
|
5
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
6
6
|
# URL: <http://nltk.org>
|
|
7
7
|
# For license information, see LICENSE.TXT
|
|
8
8
|
|
|
@@ -15,12 +15,13 @@ from __future__ import print_function, unicode_literals
|
|
|
15
15
|
import re
|
|
16
16
|
import operator
|
|
17
17
|
from collections import defaultdict
|
|
18
|
-
from functools import reduce
|
|
18
|
+
from functools import reduce, total_ordering
|
|
19
|
+
|
|
20
|
+
from six import string_types
|
|
19
21
|
|
|
20
22
|
from nltk.util import Trie
|
|
21
23
|
from nltk.internals import Counter
|
|
22
|
-
from nltk.compat import
|
|
23
|
-
python_2_unicode_compatible)
|
|
24
|
+
from nltk.compat import python_2_unicode_compatible
|
|
24
25
|
|
|
25
26
|
APP = 'APP'
|
|
26
27
|
|
|
@@ -802,7 +803,7 @@ def read_type(type_string):
|
|
|
802
803
|
|
|
803
804
|
class TypeException(Exception):
|
|
804
805
|
def __init__(self, msg):
|
|
805
|
-
|
|
806
|
+
super(TypeException, self).__init__(msg)
|
|
806
807
|
|
|
807
808
|
class InconsistentTypeHierarchyException(TypeException):
|
|
808
809
|
def __init__(self, variable, expression=None):
|
|
@@ -812,21 +813,20 @@ class InconsistentTypeHierarchyException(TypeException):
|
|
|
812
813
|
else:
|
|
813
814
|
msg = "The variable '%s' was found in multiple places with different"\
|
|
814
815
|
" types." % (variable)
|
|
815
|
-
|
|
816
|
+
super(InconsistentTypeHierarchyException, self).__init__(msg)
|
|
816
817
|
|
|
817
818
|
class TypeResolutionException(TypeException):
|
|
818
819
|
def __init__(self, expression, other_type):
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
820
|
+
super(TypeResolutionException, self).__init__(
|
|
821
|
+
"The type of '%s', '%s', cannot be resolved with type '%s'" %
|
|
822
|
+
(expression, expression.type, other_type))
|
|
822
823
|
|
|
823
824
|
class IllegalTypeException(TypeException):
|
|
824
825
|
def __init__(self, expression, other_type, allowed_type):
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
826
|
+
super(IllegalTypeException, self).__init__(
|
|
827
|
+
"Cannot set type of %s '%s' to '%s'; must match type '%s'." %
|
|
828
|
+
(expression.__class__.__name__, expression, other_type,
|
|
829
|
+
allowed_type))
|
|
830
830
|
|
|
831
831
|
def typecheck(expressions, signature=None):
|
|
832
832
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Relation Extraction
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Ewan Klein <ewan@inf.ed.ac.uk>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -25,7 +25,8 @@ from __future__ import print_function
|
|
|
25
25
|
|
|
26
26
|
from collections import defaultdict
|
|
27
27
|
import re
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
from six.moves import html_entities
|
|
29
30
|
|
|
30
31
|
# Dictionary that associates corpora with NE classes
|
|
31
32
|
NE_CLASSES = {
|
|
@@ -79,7 +80,7 @@ def _join(lst, sep=' ', untag=False):
|
|
|
79
80
|
from nltk.tag import tuple2str
|
|
80
81
|
return sep.join(tuple2str(tup) for tup in lst)
|
|
81
82
|
|
|
82
|
-
def descape_entity(m, defs=
|
|
83
|
+
def descape_entity(m, defs=html_entities.entitydefs):
|
|
83
84
|
"""
|
|
84
85
|
Translate one entity to its ISO Latin value.
|
|
85
86
|
Inspired by example from effbot.org
|
|
@@ -114,7 +115,7 @@ def list2sym(lst):
|
|
|
114
115
|
|
|
115
116
|
def tree2semi_rel(tree):
|
|
116
117
|
"""
|
|
117
|
-
Group a chunk structure into a list of 'semi-relations' of the form (list(str), ``Tree``).
|
|
118
|
+
Group a chunk structure into a list of 'semi-relations' of the form (list(str), ``Tree``).
|
|
118
119
|
|
|
119
120
|
In order to facilitate the construction of (``Tree``, string, ``Tree``) triples, this
|
|
120
121
|
identifies pairs whose first member is a list (possibly empty) of terminal
|
|
@@ -209,7 +210,7 @@ def extract_rels(subjclass, objclass, doc, corpus='ace', pattern=None, window=10
|
|
|
209
210
|
objclass = _expand(objclass)
|
|
210
211
|
else:
|
|
211
212
|
raise ValueError("your value for the object type has not been recognized: %s" % objclass)
|
|
212
|
-
|
|
213
|
+
|
|
213
214
|
if corpus == 'ace' or corpus == 'conll2002':
|
|
214
215
|
pairs = tree2semi_rel(doc)
|
|
215
216
|
elif corpus == 'ieer':
|
|
@@ -334,7 +335,7 @@ def roles_demo(trace=0):
|
|
|
334
335
|
commissioner|
|
|
335
336
|
counsel|
|
|
336
337
|
director|
|
|
337
|
-
economist|
|
|
338
|
+
economist|
|
|
338
339
|
editor|
|
|
339
340
|
executive|
|
|
340
341
|
foreman|
|
|
@@ -379,10 +380,10 @@ def ieer_headlines():
|
|
|
379
380
|
|
|
380
381
|
from nltk.corpus import ieer
|
|
381
382
|
from nltk.tree import Tree
|
|
382
|
-
|
|
383
|
+
|
|
383
384
|
print("IEER: First 20 Headlines")
|
|
384
|
-
print("=" * 45)
|
|
385
|
-
|
|
385
|
+
print("=" * 45)
|
|
386
|
+
|
|
386
387
|
trees = [(doc.docno, doc.headline) for file in ieer.fileids() for doc in ieer.parsed_docs(file)]
|
|
387
388
|
for tree in trees[:20]:
|
|
388
389
|
print()
|
|
@@ -424,7 +425,7 @@ def conllned(trace=1):
|
|
|
424
425
|
if trace:
|
|
425
426
|
lcon = rcon = True
|
|
426
427
|
for rel in extract_rels('PER', 'ORG', doc, corpus='conll2002', pattern=VAN, window=10):
|
|
427
|
-
print(rtuple(rel, lcon=
|
|
428
|
+
print(rtuple(rel, lcon=lcon, rcon=rcon))
|
|
428
429
|
|
|
429
430
|
#############################################
|
|
430
431
|
## Spanish CONLL2002: (PER, ORG)
|
|
@@ -473,11 +474,3 @@ if __name__ == '__main__':
|
|
|
473
474
|
conllesp()
|
|
474
475
|
ieer_headlines()
|
|
475
476
|
ne_chunked()
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# Natural Language Toolkit: Sentiment Analysis
|
|
3
3
|
#
|
|
4
|
-
# Copyright (C) 2001-
|
|
4
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
5
5
|
# Author: Ewan Klein <ewan@inf.ed.ac.uk>
|
|
6
6
|
# URL: <http://nltk.org/>
|
|
7
7
|
# For license information, see LICENSE.TXT
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# Natural Language Toolkit: Sentiment Analyzer
|
|
4
4
|
#
|
|
5
|
-
# Copyright (C) 2001-
|
|
5
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
6
6
|
# Author: Pierpaolo Pantone <24alsecondo@gmail.com>
|
|
7
7
|
# URL: <http://nltk.org/>
|
|
8
8
|
# For license information, see LICENSE.TXT
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"""
|
|
11
11
|
Utility methods for Sentiment Analysis.
|
|
12
12
|
"""
|
|
13
|
+
from __future__ import division
|
|
13
14
|
|
|
14
|
-
from copy import deepcopy
|
|
15
15
|
import codecs
|
|
16
16
|
import csv
|
|
17
17
|
import json
|
|
@@ -20,6 +20,8 @@ import random
|
|
|
20
20
|
import re
|
|
21
21
|
import sys
|
|
22
22
|
import time
|
|
23
|
+
from copy import deepcopy
|
|
24
|
+
from itertools import tee
|
|
23
25
|
|
|
24
26
|
import nltk
|
|
25
27
|
from nltk.corpus import CategorizedPlaintextCorpusReader
|
|
@@ -63,6 +65,7 @@ SAD = set([
|
|
|
63
65
|
':c', ':{', '>:\\', ';('
|
|
64
66
|
])
|
|
65
67
|
|
|
68
|
+
|
|
66
69
|
def timer(method):
|
|
67
70
|
"""
|
|
68
71
|
A timer decorator to measure execution performance of methods.
|
|
@@ -72,8 +75,8 @@ def timer(method):
|
|
|
72
75
|
result = method(*args, **kw)
|
|
73
76
|
end = time.time()
|
|
74
77
|
tot_time = end - start
|
|
75
|
-
hours =
|
|
76
|
-
mins =
|
|
78
|
+
hours = tot_time // 3600
|
|
79
|
+
mins = tot_time // 60 % 60
|
|
77
80
|
# in Python 2.x round() will return a float, so we convert it to int
|
|
78
81
|
secs = int(round(tot_time % 60))
|
|
79
82
|
if hours == 0 and mins == 0 and secs < 10:
|
|
@@ -83,6 +86,13 @@ def timer(method):
|
|
|
83
86
|
return result
|
|
84
87
|
return timed
|
|
85
88
|
|
|
89
|
+
|
|
90
|
+
def pairwise(iterable):
|
|
91
|
+
"""s -> (s0,s1), (s1,s2), (s2, s3), ..."""
|
|
92
|
+
a, b = tee(iterable)
|
|
93
|
+
next(b, None)
|
|
94
|
+
return zip(a, b)
|
|
95
|
+
|
|
86
96
|
#////////////////////////////////////////////////////////////
|
|
87
97
|
#{ Feature extractor functions
|
|
88
98
|
#////////////////////////////////////////////////////////////
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
# Natural Language Toolkit: vader
|
|
3
3
|
#
|
|
4
|
-
# Copyright (C) 2001-
|
|
4
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
5
5
|
# Author: C.J. Hutto <Clayton.Hutto@gtri.gatech.edu>
|
|
6
6
|
# Ewan Klein <ewan@inf.ed.ac.uk> (modifications)
|
|
7
7
|
# Pierpaolo Pantone <24alsecondo@gmail.com> (modifications)
|
|
8
|
+
# George Berry <geb97@cornell.edu> (modifications)
|
|
8
9
|
# URL: <http://nltk.org/>
|
|
9
10
|
# For license information, see LICENSE.TXT
|
|
10
11
|
#
|
|
@@ -24,7 +25,9 @@ import codecs
|
|
|
24
25
|
import math
|
|
25
26
|
import re
|
|
26
27
|
import string
|
|
28
|
+
from itertools import product
|
|
27
29
|
import nltk.data
|
|
30
|
+
from .util import pairwise
|
|
28
31
|
|
|
29
32
|
##Constants##
|
|
30
33
|
|
|
@@ -39,19 +42,18 @@ C_INCR = 0.733
|
|
|
39
42
|
N_SCALAR = -0.74
|
|
40
43
|
|
|
41
44
|
# for removing punctuation
|
|
42
|
-
REGEX_REMOVE_PUNCTUATION = re.compile('[
|
|
45
|
+
REGEX_REMOVE_PUNCTUATION = re.compile('[{0}]'.format(re.escape(string.punctuation)))
|
|
43
46
|
|
|
44
47
|
PUNC_LIST = [".", "!", "?", ",", ";", ":", "-", "'", "\"",
|
|
45
48
|
"!!", "!!!", "??", "???", "?!?", "!?!", "?!?!", "!?!?"]
|
|
46
|
-
NEGATE =
|
|
47
|
-
["aint", "arent", "cannot", "cant", "couldnt", "darent", "didnt", "doesnt",
|
|
49
|
+
NEGATE = {"aint", "arent", "cannot", "cant", "couldnt", "darent", "didnt", "doesnt",
|
|
48
50
|
"ain't", "aren't", "can't", "couldn't", "daren't", "didn't", "doesn't",
|
|
49
51
|
"dont", "hadnt", "hasnt", "havent", "isnt", "mightnt", "mustnt", "neither",
|
|
50
52
|
"don't", "hadn't", "hasn't", "haven't", "isn't", "mightn't", "mustn't",
|
|
51
53
|
"neednt", "needn't", "never", "none", "nope", "nor", "not", "nothing", "nowhere",
|
|
52
54
|
"oughtnt", "shant", "shouldnt", "uhuh", "wasnt", "werent",
|
|
53
55
|
"oughtn't", "shan't", "shouldn't", "uh-uh", "wasn't", "weren't",
|
|
54
|
-
"without", "wont", "wouldnt", "won't", "wouldn't", "rarely", "seldom", "despite"
|
|
56
|
+
"without", "wont", "wouldnt", "won't", "wouldn't", "rarely", "seldom", "despite"}
|
|
55
57
|
|
|
56
58
|
# booster/dampener 'intensifiers' or 'degree adverbs'
|
|
57
59
|
# http://en.wiktionary.org/wiki/Category:English_degree_adverbs
|
|
@@ -86,18 +88,14 @@ def negated(input_words, include_nt=True):
|
|
|
86
88
|
"""
|
|
87
89
|
Determine if input contains negation words
|
|
88
90
|
"""
|
|
89
|
-
neg_words =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if word in input_words:
|
|
93
|
-
return True
|
|
91
|
+
neg_words = NEGATE
|
|
92
|
+
if any(word.lower() in neg_words for word in input_words):
|
|
93
|
+
return True
|
|
94
94
|
if include_nt:
|
|
95
|
-
for word in input_words:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
i = input_words.index("least")
|
|
100
|
-
if i > 0 and input_words[i-1] != "at":
|
|
95
|
+
if any("n't" in word.lower() for word in input_words):
|
|
96
|
+
return True
|
|
97
|
+
for first, second in pairwise(input_words):
|
|
98
|
+
if second.lower() == "least" and first.lower() != 'at':
|
|
101
99
|
return True
|
|
102
100
|
return False
|
|
103
101
|
|
|
@@ -160,37 +158,38 @@ class SentiText(object):
|
|
|
160
158
|
# adjacent punctuation (keeps emoticons & contractions)
|
|
161
159
|
self.is_cap_diff = allcap_differential(self.words_and_emoticons)
|
|
162
160
|
|
|
163
|
-
def
|
|
164
|
-
|
|
161
|
+
def _words_plus_punc(self):
|
|
162
|
+
"""
|
|
163
|
+
Returns mapping of form:
|
|
164
|
+
{
|
|
165
|
+
'cat,': 'cat',
|
|
166
|
+
',cat': 'cat',
|
|
167
|
+
}
|
|
168
|
+
"""
|
|
169
|
+
no_punc_text = REGEX_REMOVE_PUNCTUATION.sub('', self.text)
|
|
165
170
|
# removes punctuation (but loses emoticons & contractions)
|
|
166
|
-
words_only =
|
|
167
|
-
#
|
|
168
|
-
words_only =
|
|
169
|
-
|
|
171
|
+
words_only = no_punc_text.split()
|
|
172
|
+
# remove singletons
|
|
173
|
+
words_only = set( w for w in words_only if len(w) > 1 )
|
|
174
|
+
# the product gives ('cat', ',') and (',', 'cat')
|
|
175
|
+
punc_before = {''.join(p): p[1] for p in product(PUNC_LIST, words_only)}
|
|
176
|
+
punc_after = {''.join(p): p[0] for p in product(words_only, PUNC_LIST)}
|
|
177
|
+
words_punc_dict = punc_before
|
|
178
|
+
words_punc_dict.update(punc_after)
|
|
179
|
+
return words_punc_dict
|
|
170
180
|
|
|
171
181
|
def _words_and_emoticons(self):
|
|
182
|
+
"""
|
|
183
|
+
Removes leading and trailing puncutation
|
|
184
|
+
Leaves contractions and most emoticons
|
|
185
|
+
Does not preserve punc-plus-letter emoticons (e.g. :D)
|
|
186
|
+
"""
|
|
172
187
|
wes = self.text.split()
|
|
173
|
-
|
|
174
|
-
# get rid of residual empty items or single letter words
|
|
188
|
+
words_punc_dict = self._words_plus_punc()
|
|
175
189
|
wes = [we for we in wes if len(we) > 1]
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
pword = punct + word
|
|
180
|
-
x1 = wes.count(pword)
|
|
181
|
-
while x1 > 0:
|
|
182
|
-
i = wes.index(pword)
|
|
183
|
-
wes.remove(pword)
|
|
184
|
-
wes.insert(i, word)
|
|
185
|
-
x1 = wes.count(pword)
|
|
186
|
-
|
|
187
|
-
wordp = word + punct
|
|
188
|
-
x2 = wes.count(wordp)
|
|
189
|
-
while x2 > 0:
|
|
190
|
-
i = wes.index(wordp)
|
|
191
|
-
wes.remove(wordp)
|
|
192
|
-
wes.insert(i, word)
|
|
193
|
-
x2 = wes.count(wordp)
|
|
190
|
+
for i, we in enumerate(wes):
|
|
191
|
+
if we in words_punc_dict:
|
|
192
|
+
wes[i] = words_punc_dict[we]
|
|
194
193
|
return wes
|
|
195
194
|
|
|
196
195
|
class SentimentIntensityAnalyzer(object):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Stemmers
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Trevor Cohn <tacohn@cs.mu.oz.au>
|
|
5
5
|
# Edward Loper <edloper@gmail.com>
|
|
6
6
|
# Steven Bird <stevenbird1@gmail.com>
|
|
@@ -29,5 +29,3 @@ from nltk.stem.porter import PorterStemmer
|
|
|
29
29
|
from nltk.stem.snowball import SnowballStemmer
|
|
30
30
|
from nltk.stem.wordnet import WordNetLemmatizer
|
|
31
31
|
from nltk.stem.rslp import RSLPStemmer
|
|
32
|
-
|
|
33
|
-
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
# Natural Language Toolkit: Stemmer Interface
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Trevor Cohn <tacohn@cs.mu.oz.au>
|
|
5
5
|
# Edward Loper <edloper@gmail.com>
|
|
6
6
|
# Steven Bird <stevenbird1@gmail.com>
|
|
7
7
|
# URL: <http://nltk.org/>
|
|
8
8
|
# For license information, see LICENSE.TXT
|
|
9
9
|
|
|
10
|
+
from abc import ABCMeta, abstractmethod
|
|
11
|
+
from six import add_metaclass
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@add_metaclass(ABCMeta)
|
|
10
15
|
class StemmerI(object):
|
|
11
16
|
"""
|
|
12
17
|
A processing interface for removing morphological affixes from
|
|
13
18
|
words. This process is known as stemming.
|
|
14
19
|
|
|
15
20
|
"""
|
|
21
|
+
@abstractmethod
|
|
16
22
|
def stem(self, token):
|
|
17
23
|
"""
|
|
18
24
|
Strip affixes from the token and return the stem.
|
|
@@ -20,6 +26,3 @@ class StemmerI(object):
|
|
|
20
26
|
:param token: The token that should be stemmed.
|
|
21
27
|
:type token: str
|
|
22
28
|
"""
|
|
23
|
-
raise NotImplementedError()
|
|
24
|
-
|
|
25
|
-
|