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: XML Corpus Reader
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2001-
|
|
3
|
+
# Copyright (C) 2001-2018 NLTK Project
|
|
4
4
|
# Author: Steven Bird <stevenbird1@gmail.com>
|
|
5
5
|
# URL: <http://nltk.org/>
|
|
6
6
|
# For license information, see LICENSE.TXT
|
|
@@ -18,7 +18,8 @@ import codecs
|
|
|
18
18
|
try: from xml.etree import cElementTree as ElementTree
|
|
19
19
|
except ImportError: from xml.etree import ElementTree
|
|
20
20
|
|
|
21
|
-
from
|
|
21
|
+
from six import string_types
|
|
22
|
+
|
|
22
23
|
from nltk.data import SeekableUnicodeStreamReader
|
|
23
24
|
from nltk.tokenize import WordPunctTokenizer
|
|
24
25
|
from nltk.internals import ElementWrapper
|
|
@@ -42,7 +43,7 @@ class XMLCorpusReader(CorpusReader):
|
|
|
42
43
|
# Make sure we have exactly one file -- no concatenating XML.
|
|
43
44
|
if fileid is None and len(self._fileids) == 1:
|
|
44
45
|
fileid = self._fileids[0]
|
|
45
|
-
if not isinstance(fileid,
|
|
46
|
+
if not isinstance(fileid, string_types):
|
|
46
47
|
raise TypeError('Expected a single file identifier string')
|
|
47
48
|
# Read the XML in using ElementTree.
|
|
48
49
|
elt = ElementTree.parse(self.abspath(fileid).open()).getroot()
|
|
@@ -79,7 +80,7 @@ class XMLCorpusReader(CorpusReader):
|
|
|
79
80
|
|
|
80
81
|
def raw(self, fileids=None):
|
|
81
82
|
if fileids is None: fileids = self._fileids
|
|
82
|
-
elif isinstance(fileids,
|
|
83
|
+
elif isinstance(fileids, string_types): fileids = [fileids]
|
|
83
84
|
return concat([self.open(f).read() for f in fileids])
|
|
84
85
|
|
|
85
86
|
|
|
@@ -156,7 +157,11 @@ class XMLCorpusView(StreamBackedCorpusView):
|
|
|
156
157
|
|
|
157
158
|
def _detect_encoding(self, fileid):
|
|
158
159
|
if isinstance(fileid, PathPointer):
|
|
159
|
-
|
|
160
|
+
try:
|
|
161
|
+
infile = fileid.open()
|
|
162
|
+
s = infile.readline()
|
|
163
|
+
finally:
|
|
164
|
+
infile.close()
|
|
160
165
|
else:
|
|
161
166
|
with open(fileid, 'rb') as infile:
|
|
162
167
|
s = infile.readline()
|
|
@@ -22,7 +22,8 @@ to the YCOE standard: http://www-users.york.ac.uk/~lang22/YCOE/YcoeHome.htm
|
|
|
22
22
|
import os
|
|
23
23
|
import re
|
|
24
24
|
|
|
25
|
-
from
|
|
25
|
+
from six import string_types
|
|
26
|
+
|
|
26
27
|
from nltk.tokenize import RegexpTokenizer
|
|
27
28
|
from nltk.corpus.reader.bracket_parse import BracketParseCorpusReader
|
|
28
29
|
from nltk.corpus.reader.tagged import TaggedCorpusReader
|
|
@@ -63,7 +64,7 @@ class YCOECorpusReader(CorpusReader):
|
|
|
63
64
|
"""
|
|
64
65
|
if fileids is None:
|
|
65
66
|
return self._documents
|
|
66
|
-
if isinstance(fileids,
|
|
67
|
+
if isinstance(fileids, string_types):
|
|
67
68
|
fileids = [fileids]
|
|
68
69
|
for f in fileids:
|
|
69
70
|
if f not in self._fileids:
|
|
@@ -78,7 +79,7 @@ class YCOECorpusReader(CorpusReader):
|
|
|
78
79
|
"""
|
|
79
80
|
if documents is None:
|
|
80
81
|
return self._fileids
|
|
81
|
-
elif isinstance(documents,
|
|
82
|
+
elif isinstance(documents, string_types):
|
|
82
83
|
documents = [documents]
|
|
83
84
|
return sorted(set(['%s.pos' % doc for doc in documents] +
|
|
84
85
|
['%s.psd' % doc for doc in documents]))
|
|
@@ -91,7 +92,7 @@ class YCOECorpusReader(CorpusReader):
|
|
|
91
92
|
if documents is None:
|
|
92
93
|
documents = self._documents
|
|
93
94
|
else:
|
|
94
|
-
if isinstance(documents,
|
|
95
|
+
if isinstance(documents, string_types):
|
|
95
96
|
documents = [documents]
|
|
96
97
|
for document in documents:
|
|
97
98
|
if document not in self._documents:
|
|
@@ -140,8 +141,8 @@ class YCOETaggedCorpusReader(TaggedCorpusReader):
|
|
|
140
141
|
#: A list of all documents and their titles in ycoe.
|
|
141
142
|
documents = {
|
|
142
143
|
'coadrian.o34': 'Adrian and Ritheus',
|
|
143
|
-
'coaelhom.o3': '
|
|
144
|
-
'coaelive.o3': '
|
|
144
|
+
'coaelhom.o3': 'Ælfric, Supplemental Homilies',
|
|
145
|
+
'coaelive.o3': 'Ælfric\'s Lives of Saints',
|
|
145
146
|
'coalcuin': 'Alcuin De virtutibus et vitiis',
|
|
146
147
|
'coalex.o23': 'Alexander\'s Letter to Aristotle',
|
|
147
148
|
'coapollo.o3': 'Apollonius of Tyre',
|
|
@@ -153,8 +154,8 @@ documents = {
|
|
|
153
154
|
'cobyrhtf.o3': 'Byrhtferth\'s Manual',
|
|
154
155
|
'cocanedgD': 'Canons of Edgar (D)',
|
|
155
156
|
'cocanedgX': 'Canons of Edgar (X)',
|
|
156
|
-
'cocathom1.o3': '
|
|
157
|
-
'cocathom2.o3': '
|
|
157
|
+
'cocathom1.o3': 'Ælfric\'s Catholic Homilies I',
|
|
158
|
+
'cocathom2.o3': 'Ælfric\'s Catholic Homilies II',
|
|
158
159
|
'cochad.o24': 'Saint Chad',
|
|
159
160
|
'cochdrul': 'Chrodegang of Metz, Rule',
|
|
160
161
|
'cochristoph': 'Saint Christopher',
|
|
@@ -173,7 +174,7 @@ documents = {
|
|
|
173
174
|
'codocu4.o24': 'Documents 4 (O2/O4)',
|
|
174
175
|
'coeluc1': 'Honorius of Autun, Elucidarium 1',
|
|
175
176
|
'coeluc2': 'Honorius of Autun, Elucidarium 1',
|
|
176
|
-
'coepigen.o3': '
|
|
177
|
+
'coepigen.o3': 'Ælfric\'s Epilogue to Genesis',
|
|
177
178
|
'coeuphr': 'Saint Euphrosyne',
|
|
178
179
|
'coeust': 'Saint Eustace and his companions',
|
|
179
180
|
'coexodusP': 'Exodus (P)',
|
|
@@ -188,8 +189,8 @@ documents = {
|
|
|
188
189
|
'colaece.o2': 'Leechdoms',
|
|
189
190
|
'colaw1cn.o3': 'Laws, Cnut I',
|
|
190
191
|
'colaw2cn.o3': 'Laws, Cnut II',
|
|
191
|
-
'colaw5atr.o3': 'Laws,
|
|
192
|
-
'colaw6atr.o3': 'Laws,
|
|
192
|
+
'colaw5atr.o3': 'Laws, Æthelred V',
|
|
193
|
+
'colaw6atr.o3': 'Laws, Æthelred VI',
|
|
193
194
|
'colawaf.o2': 'Laws, Alfred',
|
|
194
195
|
'colawafint.o2': 'Alfred\'s Introduction to Laws',
|
|
195
196
|
'colawger.o34': 'Laws, Gerefa',
|
|
@@ -197,14 +198,14 @@ documents = {
|
|
|
197
198
|
'colawnorthu.o3': 'Northumbra Preosta Lagu',
|
|
198
199
|
'colawwllad.o4': 'Laws, William I, Lad',
|
|
199
200
|
'coleofri.o4': 'Leofric',
|
|
200
|
-
'colsigef.o3': '
|
|
201
|
-
'colsigewB': '
|
|
202
|
-
'colsigewZ.o34': '
|
|
203
|
-
'colwgeat': '
|
|
204
|
-
'colwsigeT': '
|
|
205
|
-
'colwsigeXa.o34': '
|
|
206
|
-
'colwstan1.o3': '
|
|
207
|
-
'colwstan2.o3': '
|
|
201
|
+
'colsigef.o3': 'Ælfric\'s Letter to Sigefyrth',
|
|
202
|
+
'colsigewB': 'Ælfric\'s Letter to Sigeweard (B)',
|
|
203
|
+
'colsigewZ.o34': 'Ælfric\'s Letter to Sigeweard (Z)',
|
|
204
|
+
'colwgeat': 'Ælfric\'s Letter to Wulfgeat',
|
|
205
|
+
'colwsigeT': 'Ælfric\'s Letter to Wulfsige (T)',
|
|
206
|
+
'colwsigeXa.o34': 'Ælfric\'s Letter to Wulfsige (Xa)',
|
|
207
|
+
'colwstan1.o3': 'Ælfric\'s Letter to Wulfstan I',
|
|
208
|
+
'colwstan2.o3': 'Ælfric\'s Letter to Wulfstan II',
|
|
208
209
|
'comargaC.o34': 'Saint Margaret (C)',
|
|
209
210
|
'comargaT': 'Saint Margaret (T)',
|
|
210
211
|
'comart1': 'Martyrology, I',
|
|
@@ -219,11 +220,11 @@ documents = {
|
|
|
219
220
|
'conicodE': 'Gospel of Nicodemus (E)',
|
|
220
221
|
'coorosiu.o2': 'Orosius',
|
|
221
222
|
'cootest.o3': 'Heptateuch',
|
|
222
|
-
'coprefcath1.o3': '
|
|
223
|
-
'coprefcath2.o3': '
|
|
223
|
+
'coprefcath1.o3': 'Ælfric\'s Preface to Catholic Homilies I',
|
|
224
|
+
'coprefcath2.o3': 'Ælfric\'s Preface to Catholic Homilies II',
|
|
224
225
|
'coprefcura.o2': 'Preface to the Cura Pastoralis',
|
|
225
|
-
'coprefgen.o3': '
|
|
226
|
-
'copreflives.o3': '
|
|
226
|
+
'coprefgen.o3': 'Ælfric\'s Preface to Genesis',
|
|
227
|
+
'copreflives.o3': 'Ælfric\'s Preface to Lives of Saints',
|
|
227
228
|
'coprefsolilo': 'Preface to Augustine\'s Soliloquies',
|
|
228
229
|
'coquadru.o23': 'Pseudo-Apuleius, Medicina de quadrupedibus',
|
|
229
230
|
'corood': 'History of the Holy Rood-Tree',
|
|
@@ -231,7 +232,7 @@ documents = {
|
|
|
231
232
|
'cosolilo': 'St. Augustine\'s Soliloquies',
|
|
232
233
|
'cosolsat1.o4': 'Solomon and Saturn I',
|
|
233
234
|
'cosolsat2': 'Solomon and Saturn II',
|
|
234
|
-
'cotempo.o3': '
|
|
235
|
+
'cotempo.o3': 'Ælfric\'s De Temporibus Anni',
|
|
235
236
|
'coverhom': 'Vercelli Homilies',
|
|
236
237
|
'coverhomE': 'Vercelli Homilies (E)',
|
|
237
238
|
'coverhomL': 'Vercelli Homilies (L)',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Corpus Reader Utility Functions
|
|
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
|
|
@@ -38,12 +38,29 @@ class LazyCorpusLoader(object):
|
|
|
38
38
|
NLTK data package. Once they've properly installed the data
|
|
39
39
|
package (or modified ``nltk.data.path`` to point to its location),
|
|
40
40
|
they can then use the corpus object without restarting python.
|
|
41
|
+
|
|
42
|
+
:param name: The name of the corpus
|
|
43
|
+
:type name: str
|
|
44
|
+
:param reader_cls: The specific CorpusReader class, e.g. PlaintextCorpusReader, WordListCorpusReader
|
|
45
|
+
:type reader: nltk.corpus.reader.api.CorpusReader
|
|
46
|
+
:param nltk_data_subdir: The subdirectory where the corpus is stored.
|
|
47
|
+
:type nltk_data_subdir: str
|
|
48
|
+
:param *args: Any other non-keywords arguments that `reader_cls` might need.
|
|
49
|
+
:param *kargs: Any other keywords arguments that `reader_cls` might need.
|
|
41
50
|
"""
|
|
42
51
|
def __init__(self, name, reader_cls, *args, **kwargs):
|
|
43
52
|
from nltk.corpus.reader.api import CorpusReader
|
|
44
53
|
assert issubclass(reader_cls, CorpusReader)
|
|
45
54
|
self.__name = self.__name__ = name
|
|
46
55
|
self.__reader_cls = reader_cls
|
|
56
|
+
# If nltk_data_subdir is set explicitly
|
|
57
|
+
if 'nltk_data_subdir' in kwargs:
|
|
58
|
+
# Use the specified subdirectory path
|
|
59
|
+
self.subdir = kwargs['nltk_data_subdir']
|
|
60
|
+
# Pops the `nltk_data_subdir` argument, we don't need it anymore.
|
|
61
|
+
kwargs.pop('nltk_data_subdir', None)
|
|
62
|
+
else: # Otherwise use 'nltk_data/corpora'
|
|
63
|
+
self.subdir = 'corpora'
|
|
47
64
|
self.__args = args
|
|
48
65
|
self.__kwargs = kwargs
|
|
49
66
|
|
|
@@ -52,15 +69,15 @@ class LazyCorpusLoader(object):
|
|
|
52
69
|
zip_name = re.sub(r'(([^/]*)(/.*)?)', r'\2.zip/\1/', self.__name)
|
|
53
70
|
if TRY_ZIPFILE_FIRST:
|
|
54
71
|
try:
|
|
55
|
-
root = nltk.data.find('
|
|
72
|
+
root = nltk.data.find('{}/{}'.format(self.subdir, zip_name))
|
|
56
73
|
except LookupError as e:
|
|
57
|
-
try: root = nltk.data.find('
|
|
74
|
+
try: root = nltk.data.find('{}/{}'.format(self.subdir, self.__name))
|
|
58
75
|
except LookupError: raise e
|
|
59
76
|
else:
|
|
60
77
|
try:
|
|
61
|
-
root = nltk.data.find('
|
|
78
|
+
root = nltk.data.find('{}/{}'.format(self.subdir, self.__name))
|
|
62
79
|
except LookupError as e:
|
|
63
|
-
try: root = nltk.data.find('
|
|
80
|
+
try: root = nltk.data.find('{}/{}'.format(self.subdir, zip_name))
|
|
64
81
|
except LookupError: raise e
|
|
65
82
|
|
|
66
83
|
# Load the corpus.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Natural Language Toolkit: Utility functions
|
|
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
|
|
@@ -32,17 +32,30 @@ to a local file.
|
|
|
32
32
|
"""
|
|
33
33
|
from __future__ import print_function, unicode_literals
|
|
34
34
|
from __future__ import division
|
|
35
|
+
from abc import ABCMeta, abstractmethod
|
|
36
|
+
from six import add_metaclass
|
|
35
37
|
|
|
36
|
-
import
|
|
38
|
+
import functools
|
|
39
|
+
import textwrap
|
|
37
40
|
import io
|
|
38
41
|
import os
|
|
39
|
-
import textwrap
|
|
40
42
|
import re
|
|
43
|
+
import sys
|
|
41
44
|
import zipfile
|
|
42
45
|
import codecs
|
|
43
46
|
|
|
44
47
|
from gzip import GzipFile, READ as GZ_READ, WRITE as GZ_WRITE
|
|
45
48
|
|
|
49
|
+
try: # Python 3.
|
|
50
|
+
textwrap_indent = functools.partial(textwrap.indent, prefix=' ')
|
|
51
|
+
except AttributeError: # Python 2; indent() not available for Python2.
|
|
52
|
+
textwrap_fill = functools.partial(textwrap.fill,
|
|
53
|
+
initial_indent=' ',
|
|
54
|
+
subsequent_indent=' ',
|
|
55
|
+
replace_whitespace=False)
|
|
56
|
+
def textwrap_indent(text):
|
|
57
|
+
return '\n'.join(textwrap_fill(line) for line in text.splitlines())
|
|
58
|
+
|
|
46
59
|
try:
|
|
47
60
|
from zlib import Z_SYNC_FLUSH as FLUSH
|
|
48
61
|
except ImportError:
|
|
@@ -53,12 +66,12 @@ try:
|
|
|
53
66
|
except ImportError:
|
|
54
67
|
import pickle
|
|
55
68
|
|
|
69
|
+
from six import string_types, text_type
|
|
70
|
+
from six.moves.urllib.request import urlopen, url2pathname
|
|
71
|
+
|
|
56
72
|
# this import should be more specific:
|
|
57
73
|
import nltk
|
|
58
|
-
|
|
59
|
-
from nltk.compat import py3_data, add_py3_data
|
|
60
|
-
from nltk.compat import text_type, string_types, BytesIO, urlopen, url2pathname
|
|
61
|
-
|
|
74
|
+
from nltk.compat import py3_data, add_py3_data, BytesIO
|
|
62
75
|
|
|
63
76
|
######################################################################
|
|
64
77
|
# Search Path
|
|
@@ -82,6 +95,7 @@ if sys.platform.startswith('win'):
|
|
|
82
95
|
path += [
|
|
83
96
|
str(r'C:\nltk_data'), str(r'D:\nltk_data'), str(r'E:\nltk_data'),
|
|
84
97
|
os.path.join(sys.prefix, str('nltk_data')),
|
|
98
|
+
os.path.join(sys.prefix, str('share'), str('nltk_data')),
|
|
85
99
|
os.path.join(sys.prefix, str('lib'), str('nltk_data')),
|
|
86
100
|
os.path.join(
|
|
87
101
|
os.environ.get(str('APPDATA'), str('C:\\')), str('nltk_data'))
|
|
@@ -92,7 +106,10 @@ else:
|
|
|
92
106
|
str('/usr/share/nltk_data'),
|
|
93
107
|
str('/usr/local/share/nltk_data'),
|
|
94
108
|
str('/usr/lib/nltk_data'),
|
|
95
|
-
str('/usr/local/lib/nltk_data')
|
|
109
|
+
str('/usr/local/lib/nltk_data'),
|
|
110
|
+
os.path.join(sys.prefix, str('nltk_data')),
|
|
111
|
+
os.path.join(sys.prefix, str('share'), str('nltk_data')),
|
|
112
|
+
os.path.join(sys.prefix, str('lib'), str('nltk_data'))
|
|
96
113
|
]
|
|
97
114
|
|
|
98
115
|
|
|
@@ -100,8 +117,8 @@ else:
|
|
|
100
117
|
# Util Functions
|
|
101
118
|
######################################################################
|
|
102
119
|
|
|
103
|
-
def gzip_open_unicode(filename, mode="rb", compresslevel=9,
|
|
104
|
-
|
|
120
|
+
def gzip_open_unicode(filename, mode="rb", compresslevel=9, encoding='utf-8',
|
|
121
|
+
fileobj=None, errors=None, newline=None):
|
|
105
122
|
if fileobj is None:
|
|
106
123
|
fileobj = GzipFile(filename, mode, compresslevel, fileobj)
|
|
107
124
|
return io.TextIOWrapper(fileobj, encoding, errors, newline)
|
|
@@ -241,6 +258,7 @@ def normalize_resource_name(resource_name, allow_relative=True, relative_path=No
|
|
|
241
258
|
# Path Pointers
|
|
242
259
|
######################################################################
|
|
243
260
|
|
|
261
|
+
@add_metaclass(ABCMeta)
|
|
244
262
|
class PathPointer(object):
|
|
245
263
|
"""
|
|
246
264
|
An abstract base class for 'path pointers,' used by NLTK's data
|
|
@@ -251,6 +269,7 @@ class PathPointer(object):
|
|
|
251
269
|
by reading that zipfile.
|
|
252
270
|
"""
|
|
253
271
|
|
|
272
|
+
@abstractmethod
|
|
254
273
|
def open(self, encoding=None):
|
|
255
274
|
"""
|
|
256
275
|
Return a seekable read-only stream that can be used to read
|
|
@@ -259,8 +278,8 @@ class PathPointer(object):
|
|
|
259
278
|
:raise IOError: If the path specified by this pointer does
|
|
260
279
|
not contain a readable file.
|
|
261
280
|
"""
|
|
262
|
-
raise NotImplementedError('abstract base class')
|
|
263
281
|
|
|
282
|
+
@abstractmethod
|
|
264
283
|
def file_size(self):
|
|
265
284
|
"""
|
|
266
285
|
Return the size of the file pointed to by this path pointer,
|
|
@@ -269,8 +288,8 @@ class PathPointer(object):
|
|
|
269
288
|
:raise IOError: If the path specified by this pointer does
|
|
270
289
|
not contain a readable file.
|
|
271
290
|
"""
|
|
272
|
-
raise NotImplementedError('abstract base class')
|
|
273
291
|
|
|
292
|
+
@abstractmethod
|
|
274
293
|
def join(self, fileid):
|
|
275
294
|
"""
|
|
276
295
|
Return a new path pointer formed by starting at the path
|
|
@@ -279,7 +298,6 @@ class PathPointer(object):
|
|
|
279
298
|
should be separated by forward slashes, regardless of
|
|
280
299
|
the underlying file system's path seperator character.
|
|
281
300
|
"""
|
|
282
|
-
raise NotImplementedError('abstract base class')
|
|
283
301
|
|
|
284
302
|
|
|
285
303
|
class FileSystemPathPointer(PathPointer, text_type):
|
|
@@ -369,11 +387,6 @@ class BufferedGzipFile(GzipFile):
|
|
|
369
387
|
"""
|
|
370
388
|
GzipFile.__init__(self, filename, mode, compresslevel, fileobj)
|
|
371
389
|
self._size = kwargs.get('size', self.SIZE)
|
|
372
|
-
# Note: In > Python3.5, GzipFile is already using a
|
|
373
|
-
# buffered reader in the backend which has a variable self._buffer
|
|
374
|
-
# See https://github.com/nltk/nltk/issues/1308
|
|
375
|
-
if sys.version.startswith('3.5'):
|
|
376
|
-
sys.stderr.write("Use the native Python gzip.GzipFile instead.")
|
|
377
390
|
self._nltk_buffer = BytesIO()
|
|
378
391
|
# cStringIO does not support len.
|
|
379
392
|
self._len = 0
|
|
@@ -445,7 +458,13 @@ class GzipFileSystemPathPointer(FileSystemPathPointer):
|
|
|
445
458
|
"""
|
|
446
459
|
|
|
447
460
|
def open(self, encoding=None):
|
|
448
|
-
|
|
461
|
+
# Note: In >= Python3.5, GzipFile is already using a
|
|
462
|
+
# buffered reader in the backend which has a variable self._buffer
|
|
463
|
+
# See https://github.com/nltk/nltk/issues/1308
|
|
464
|
+
if sys.version.startswith('2.7') or sys.version.startswith('3.4'):
|
|
465
|
+
stream = BufferedGzipFile(self._path, 'rb')
|
|
466
|
+
else:
|
|
467
|
+
stream = GzipFile(self._path, 'rb')
|
|
449
468
|
if encoding:
|
|
450
469
|
stream = SeekableUnicodeStreamReader(stream, encoding)
|
|
451
470
|
return stream
|
|
@@ -472,7 +491,7 @@ class ZipFilePathPointer(PathPointer):
|
|
|
472
491
|
entry = normalize_resource_name(entry, True, '/').lstrip('/')
|
|
473
492
|
|
|
474
493
|
# Check that the entry exists:
|
|
475
|
-
if entry:
|
|
494
|
+
if entry != '.':
|
|
476
495
|
try:
|
|
477
496
|
zipfile.getinfo(entry)
|
|
478
497
|
except Exception:
|
|
@@ -510,7 +529,13 @@ class ZipFilePathPointer(PathPointer):
|
|
|
510
529
|
data = self._zipfile.read(self._entry)
|
|
511
530
|
stream = BytesIO(data)
|
|
512
531
|
if self._entry.endswith('.gz'):
|
|
513
|
-
|
|
532
|
+
# Note: In >= Python3.5, GzipFile is already using a
|
|
533
|
+
# buffered reader in the backend which has a variable self._buffer
|
|
534
|
+
# See https://github.com/nltk/nltk/issues/1308
|
|
535
|
+
if sys.version.startswith('2.7') or sys.version.startswith('3.4'):
|
|
536
|
+
stream = BufferedGzipFile(self._entry, fileobj=stream)
|
|
537
|
+
else:
|
|
538
|
+
stream = GzipFile(self._entry, fileobj=stream)
|
|
514
539
|
elif encoding is not None:
|
|
515
540
|
stream = SeekableUnicodeStreamReader(stream, encoding)
|
|
516
541
|
return stream
|
|
@@ -527,7 +552,9 @@ class ZipFilePathPointer(PathPointer):
|
|
|
527
552
|
self._zipfile.filename, self._entry)
|
|
528
553
|
|
|
529
554
|
def __str__(self):
|
|
530
|
-
return os.path.normpath(os.path.join(self._zipfile.filename,
|
|
555
|
+
return os.path.normpath(os.path.join(self._zipfile.filename,
|
|
556
|
+
self._entry))
|
|
557
|
+
|
|
531
558
|
|
|
532
559
|
######################################################################
|
|
533
560
|
# Access Functions
|
|
@@ -629,15 +656,22 @@ def find(resource_name, paths=None):
|
|
|
629
656
|
except LookupError:
|
|
630
657
|
pass
|
|
631
658
|
|
|
659
|
+
# Identify the package (i.e. the .zip file) to download.
|
|
660
|
+
resource_zipname = resource_name.split('/')[1]
|
|
661
|
+
if resource_zipname.endswith('.zip'):
|
|
662
|
+
resource_zipname = resource_zipname.rpartition('.')[0]
|
|
632
663
|
# Display a friendly error message if the resource wasn't found:
|
|
633
|
-
msg =
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
664
|
+
msg = str("Resource \33[93m{resource}\033[0m not found.\n"
|
|
665
|
+
"Please use the NLTK Downloader to obtain the resource:\n\n"
|
|
666
|
+
"\33[31m" # To display red text in terminal.
|
|
667
|
+
">>> import nltk\n"
|
|
668
|
+
">>> nltk.download(\'{resource}\')\n"
|
|
669
|
+
"\033[0m").format(resource=resource_zipname)
|
|
670
|
+
msg = textwrap_indent(msg)
|
|
671
|
+
|
|
638
672
|
msg += '\n Searched in:' + ''.join('\n - %r' % d for d in paths)
|
|
639
673
|
sep = '*' * 70
|
|
640
|
-
resource_not_found = '\n%s\n%s\n%s' % (sep, msg, sep)
|
|
674
|
+
resource_not_found = '\n%s\n%s\n%s\n' % (sep, msg, sep)
|
|
641
675
|
raise LookupError(resource_not_found)
|
|
642
676
|
|
|
643
677
|
|
|
@@ -678,6 +712,7 @@ def retrieve(resource_url, filename=None, verbose=True):
|
|
|
678
712
|
|
|
679
713
|
infile.close()
|
|
680
714
|
|
|
715
|
+
|
|
681
716
|
#: A dictionary describing the formats that are supported by NLTK's
|
|
682
717
|
#: load() method. Keys are format names, and values are format
|
|
683
718
|
#: descriptions.
|
|
@@ -979,7 +1014,7 @@ class OpenOnDemandZipFile(zipfile.ZipFile):
|
|
|
979
1014
|
zipfile.ZipFile.__init__(self, filename)
|
|
980
1015
|
assert self.filename == filename
|
|
981
1016
|
self.close()
|
|
982
|
-
# After closing a ZipFile object, the _fileRefCnt needs to be cleared
|
|
1017
|
+
# After closing a ZipFile object, the _fileRefCnt needs to be cleared
|
|
983
1018
|
# for Python2and3 compatible code.
|
|
984
1019
|
self._fileRefCnt = 0
|
|
985
1020
|
|
|
@@ -1444,6 +1479,7 @@ class SeekableUnicodeStreamReader(object):
|
|
|
1444
1479
|
|
|
1445
1480
|
return None
|
|
1446
1481
|
|
|
1482
|
+
|
|
1447
1483
|
__all__ = ['path', 'PathPointer', 'FileSystemPathPointer', 'BufferedGzipFile',
|
|
1448
1484
|
'GzipFileSystemPathPointer', 'GzipFileSystemPathPointer',
|
|
1449
1485
|
'find', 'retrieve', 'FORMATS', 'AUTO_FORMATS', 'load',
|
|
@@ -56,7 +56,11 @@ def getinfo(func):
|
|
|
56
56
|
'self, x, y, *args, **kw'
|
|
57
57
|
"""
|
|
58
58
|
assert inspect.ismethod(func) or inspect.isfunction(func)
|
|
59
|
-
|
|
59
|
+
if sys.version_info[0] >= 3:
|
|
60
|
+
argspec = inspect.getfullargspec(func)
|
|
61
|
+
else:
|
|
62
|
+
argspec = inspect.getargspec(func)
|
|
63
|
+
regargs, varargs, varkwargs, defaults = argspec[:4]
|
|
60
64
|
argnames = list(regargs)
|
|
61
65
|
if varargs:
|
|
62
66
|
argnames.append(varargs)
|