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.
Files changed (404) hide show
  1. {nltk-3.2.1 → nltk-3.3}/LICENSE.txt +1 -1
  2. {nltk-3.2.1/nltk.egg-info → nltk-3.3}/PKG-INFO +13 -5
  3. nltk-3.3/README.md +49 -0
  4. nltk-3.3/nltk/VERSION +1 -0
  5. {nltk-3.2.1 → nltk-3.3}/nltk/__init__.py +3 -3
  6. {nltk-3.2.1 → nltk-3.3}/nltk/app/__init__.py +2 -3
  7. {nltk-3.2.1 → nltk-3.3}/nltk/app/chartparser_app.py +92 -92
  8. {nltk-3.2.1 → nltk-3.3}/nltk/app/chunkparser_app.py +11 -13
  9. {nltk-3.2.1 → nltk-3.3}/nltk/app/collocations_app.py +8 -11
  10. {nltk-3.2.1 → nltk-3.3}/nltk/app/concordance_app.py +9 -11
  11. {nltk-3.2.1 → nltk-3.3}/nltk/app/nemo_app.py +18 -17
  12. {nltk-3.2.1 → nltk-3.3}/nltk/app/rdparser_app.py +10 -12
  13. {nltk-3.2.1 → nltk-3.3}/nltk/app/srparser_app.py +16 -16
  14. {nltk-3.2.1 → nltk-3.3}/nltk/app/wordfreq_app.py +1 -1
  15. {nltk-3.2.1 → nltk-3.3}/nltk/app/wordnet_app.py +11 -11
  16. {nltk-3.2.1 → nltk-3.3}/nltk/book.py +2 -1
  17. {nltk-3.2.1 → nltk-3.3}/nltk/ccg/__init__.py +1 -1
  18. {nltk-3.2.1 → nltk-3.3}/nltk/ccg/api.py +67 -47
  19. {nltk-3.2.1 → nltk-3.3}/nltk/ccg/chart.py +7 -5
  20. {nltk-3.2.1 → nltk-3.3}/nltk/ccg/combinator.py +42 -11
  21. {nltk-3.2.1 → nltk-3.3}/nltk/ccg/lexicon.py +1 -1
  22. {nltk-3.2.1 → nltk-3.3}/nltk/ccg/logic.py +1 -1
  23. {nltk-3.2.1 → nltk-3.3}/nltk/chat/__init__.py +1 -1
  24. {nltk-3.2.1 → nltk-3.3}/nltk/chat/eliza.py +1 -1
  25. {nltk-3.2.1 → nltk-3.3}/nltk/chat/iesha.py +1 -1
  26. {nltk-3.2.1 → nltk-3.3}/nltk/chat/rude.py +1 -1
  27. {nltk-3.2.1 → nltk-3.3}/nltk/chat/suntsu.py +1 -1
  28. {nltk-3.2.1 → nltk-3.3}/nltk/chat/util.py +12 -10
  29. {nltk-3.2.1 → nltk-3.3}/nltk/chat/zen.py +1 -1
  30. {nltk-3.2.1 → nltk-3.3}/nltk/chunk/__init__.py +1 -1
  31. {nltk-3.2.1 → nltk-3.3}/nltk/chunk/api.py +1 -1
  32. {nltk-3.2.1 → nltk-3.3}/nltk/chunk/named_entity.py +13 -13
  33. {nltk-3.2.1 → nltk-3.3}/nltk/chunk/regexp.py +9 -3
  34. {nltk-3.2.1 → nltk-3.3}/nltk/chunk/util.py +12 -12
  35. {nltk-3.2.1 → nltk-3.3}/nltk/classify/__init__.py +1 -1
  36. {nltk-3.2.1 → nltk-3.3}/nltk/classify/api.py +1 -1
  37. {nltk-3.2.1 → nltk-3.3}/nltk/classify/decisiontree.py +18 -18
  38. {nltk-3.2.1 → nltk-3.3}/nltk/classify/maxent.py +26 -8
  39. {nltk-3.2.1 → nltk-3.3}/nltk/classify/megam.py +5 -4
  40. {nltk-3.2.1 → nltk-3.3}/nltk/classify/naivebayes.py +29 -26
  41. {nltk-3.2.1 → nltk-3.3}/nltk/classify/rte_classify.py +58 -89
  42. {nltk-3.2.1 → nltk-3.3}/nltk/classify/scikitlearn.py +4 -2
  43. {nltk-3.2.1 → nltk-3.3}/nltk/classify/senna.py +24 -22
  44. {nltk-3.2.1 → nltk-3.3}/nltk/classify/svm.py +1 -1
  45. {nltk-3.2.1 → nltk-3.3}/nltk/classify/tadm.py +4 -3
  46. {nltk-3.2.1 → nltk-3.3}/nltk/classify/textcat.py +1 -1
  47. {nltk-3.2.1 → nltk-3.3}/nltk/classify/util.py +13 -1
  48. {nltk-3.2.1 → nltk-3.3}/nltk/classify/weka.py +7 -6
  49. {nltk-3.2.1 → nltk-3.3}/nltk/cluster/__init__.py +1 -1
  50. {nltk-3.2.1 → nltk-3.3}/nltk/cluster/api.py +9 -5
  51. {nltk-3.2.1 → nltk-3.3}/nltk/cluster/em.py +1 -1
  52. {nltk-3.2.1 → nltk-3.3}/nltk/cluster/gaac.py +3 -3
  53. {nltk-3.2.1 → nltk-3.3}/nltk/cluster/kmeans.py +1 -1
  54. {nltk-3.2.1 → nltk-3.3}/nltk/cluster/util.py +35 -20
  55. nltk-3.3/nltk/collections.py +640 -0
  56. {nltk-3.2.1 → nltk-3.3}/nltk/collocations.py +2 -2
  57. nltk-3.3/nltk/compat.py +365 -0
  58. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/__init__.py +37 -16
  59. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/europarl_raw.py +1 -1
  60. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/__init__.py +4 -2
  61. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/aligned.py +4 -3
  62. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/api.py +12 -10
  63. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/bnc.py +1 -1
  64. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/bracket_parse.py +1 -1
  65. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/categorized_sents.py +4 -3
  66. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/chasen.py +5 -4
  67. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/childes.py +8 -9
  68. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/chunked.py +4 -4
  69. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/cmudict.py +4 -2
  70. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/comparative_sents.py +4 -2
  71. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/conll.py +19 -12
  72. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/crubadan.py +2 -2
  73. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/dependency.py +1 -1
  74. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/framenet.py +1085 -119
  75. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ieer.py +4 -3
  76. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/indian.py +4 -5
  77. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ipipan.py +6 -5
  78. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/knbc.py +2 -2
  79. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/lin.py +1 -1
  80. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/mte.py +5 -4
  81. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/nkjp.py +4 -3
  82. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/nombank.py +8 -8
  83. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/nps_chat.py +1 -1
  84. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/opinion_lexicon.py +3 -3
  85. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/panlex_lite.py +1 -1
  86. nltk-3.3/nltk/corpus/reader/pl196x.py +292 -0
  87. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/plaintext.py +3 -4
  88. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ppattach.py +4 -3
  89. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/propbank.py +8 -10
  90. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/pros_cons.py +5 -3
  91. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/reviews.py +3 -1
  92. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/rte.py +5 -7
  93. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/semcor.py +1 -1
  94. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/senseval.py +4 -2
  95. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/sentiwordnet.py +3 -3
  96. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/sinica_treebank.py +1 -1
  97. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/string_category.py +4 -3
  98. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/switchboard.py +1 -1
  99. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/tagged.py +4 -3
  100. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/timit.py +10 -8
  101. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/toolbox.py +4 -4
  102. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/twitter.py +4 -6
  103. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/util.py +7 -3
  104. nltk-3.3/nltk/corpus/reader/verbnet.py +595 -0
  105. nltk-3.3/nltk/corpus/reader/wordlist.py +134 -0
  106. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/wordnet.py +357 -285
  107. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/xmldocs.py +10 -5
  108. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/ycoe.py +25 -24
  109. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/util.py +22 -5
  110. {nltk-3.2.1 → nltk-3.3}/nltk/data.py +65 -29
  111. {nltk-3.2.1 → nltk-3.3}/nltk/decorators.py +5 -1
  112. {nltk-3.2.1 → nltk-3.3}/nltk/downloader.py +59 -55
  113. {nltk-3.2.1 → nltk-3.3}/nltk/draw/__init__.py +4 -4
  114. {nltk-3.2.1 → nltk-3.3}/nltk/draw/cfg.py +5 -8
  115. {nltk-3.2.1 → nltk-3.3}/nltk/draw/dispersion.py +1 -1
  116. {nltk-3.2.1 → nltk-3.3}/nltk/draw/table.py +4 -4
  117. {nltk-3.2.1 → nltk-3.3}/nltk/draw/tree.py +2 -5
  118. {nltk-3.2.1 → nltk-3.3}/nltk/draw/util.py +17 -17
  119. {nltk-3.2.1 → nltk-3.3}/nltk/featstruct.py +290 -173
  120. {nltk-3.2.1 → nltk-3.3}/nltk/grammar.py +87 -44
  121. {nltk-3.2.1 → nltk-3.3}/nltk/help.py +1 -1
  122. {nltk-3.2.1 → nltk-3.3}/nltk/inference/__init__.py +1 -1
  123. {nltk-3.2.1 → nltk-3.3}/nltk/inference/api.py +27 -19
  124. {nltk-3.2.1 → nltk-3.3}/nltk/inference/discourse.py +20 -16
  125. {nltk-3.2.1 → nltk-3.3}/nltk/inference/nonmonotonic.py +1 -1
  126. {nltk-3.2.1 → nltk-3.3}/nltk/inference/prover9.py +1 -1
  127. {nltk-3.2.1 → nltk-3.3}/nltk/inference/resolution.py +1 -1
  128. {nltk-3.2.1 → nltk-3.3}/nltk/inference/tableau.py +1 -1
  129. {nltk-3.2.1 → nltk-3.3}/nltk/internals.py +44 -44
  130. {nltk-3.2.1 → nltk-3.3}/nltk/jsontags.py +1 -1
  131. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/__init__.py +2 -1
  132. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/agreement.py +29 -9
  133. nltk-3.3/nltk/metrics/aline.py +607 -0
  134. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/association.py +8 -4
  135. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/confusionmatrix.py +1 -1
  136. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/distance.py +12 -7
  137. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/paice.py +1 -1
  138. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/scores.py +7 -7
  139. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/segmentation.py +4 -5
  140. {nltk-3.2.1 → nltk-3.3}/nltk/metrics/spearman.py +1 -1
  141. {nltk-3.2.1 → nltk-3.3}/nltk/misc/__init__.py +1 -1
  142. {nltk-3.2.1 → nltk-3.3}/nltk/misc/chomsky.py +4 -2
  143. {nltk-3.2.1 → nltk-3.3}/nltk/misc/minimalset.py +1 -1
  144. {nltk-3.2.1 → nltk-3.3}/nltk/misc/sort.py +1 -1
  145. {nltk-3.2.1 → nltk-3.3}/nltk/misc/wordfinder.py +1 -1
  146. {nltk-3.2.1 → nltk-3.3}/nltk/parse/__init__.py +2 -1
  147. {nltk-3.2.1 → nltk-3.3}/nltk/parse/api.py +1 -1
  148. {nltk-3.2.1 → nltk-3.3}/nltk/parse/bllip.py +1 -1
  149. {nltk-3.2.1 → nltk-3.3}/nltk/parse/chart.py +8 -7
  150. nltk-3.3/nltk/parse/corenlp.py +780 -0
  151. {nltk-3.2.1 → nltk-3.3}/nltk/parse/dependencygraph.py +4 -2
  152. {nltk-3.2.1 → nltk-3.3}/nltk/parse/earleychart.py +4 -3
  153. {nltk-3.2.1 → nltk-3.3}/nltk/parse/evaluate.py +1 -1
  154. {nltk-3.2.1 → nltk-3.3}/nltk/parse/featurechart.py +6 -4
  155. {nltk-3.2.1 → nltk-3.3}/nltk/parse/generate.py +15 -4
  156. {nltk-3.2.1 → nltk-3.3}/nltk/parse/malt.py +2 -2
  157. {nltk-3.2.1 → nltk-3.3}/nltk/parse/nonprojectivedependencyparser.py +3 -3
  158. {nltk-3.2.1 → nltk-3.3}/nltk/parse/pchart.py +1 -1
  159. {nltk-3.2.1 → nltk-3.3}/nltk/parse/projectivedependencyparser.py +6 -5
  160. {nltk-3.2.1 → nltk-3.3}/nltk/parse/recursivedescent.py +2 -3
  161. {nltk-3.2.1 → nltk-3.3}/nltk/parse/shiftreduce.py +2 -3
  162. {nltk-3.2.1 → nltk-3.3}/nltk/parse/stanford.py +53 -28
  163. {nltk-3.2.1 → nltk-3.3}/nltk/parse/transitionparser.py +11 -9
  164. {nltk-3.2.1 → nltk-3.3}/nltk/parse/util.py +1 -1
  165. {nltk-3.2.1 → nltk-3.3}/nltk/parse/viterbi.py +1 -1
  166. {nltk-3.2.1 → nltk-3.3}/nltk/probability.py +75 -20
  167. {nltk-3.2.1 → nltk-3.3}/nltk/sem/__init__.py +1 -1
  168. {nltk-3.2.1 → nltk-3.3}/nltk/sem/boxer.py +15 -15
  169. {nltk-3.2.1 → nltk-3.3}/nltk/sem/chat80.py +6 -6
  170. {nltk-3.2.1 → nltk-3.3}/nltk/sem/cooper_storage.py +1 -1
  171. {nltk-3.2.1 → nltk-3.3}/nltk/sem/drt.py +9 -8
  172. {nltk-3.2.1 → nltk-3.3}/nltk/sem/drt_glue_demo.py +5 -9
  173. {nltk-3.2.1 → nltk-3.3}/nltk/sem/evaluate.py +9 -3
  174. {nltk-3.2.1 → nltk-3.3}/nltk/sem/glue.py +8 -6
  175. {nltk-3.2.1 → nltk-3.3}/nltk/sem/hole.py +4 -2
  176. {nltk-3.2.1 → nltk-3.3}/nltk/sem/lfg.py +4 -2
  177. {nltk-3.2.1 → nltk-3.3}/nltk/sem/linearlogic.py +4 -2
  178. {nltk-3.2.1 → nltk-3.3}/nltk/sem/logic.py +14 -14
  179. {nltk-3.2.1 → nltk-3.3}/nltk/sem/relextract.py +11 -18
  180. {nltk-3.2.1 → nltk-3.3}/nltk/sem/skolemize.py +1 -1
  181. {nltk-3.2.1 → nltk-3.3}/nltk/sem/util.py +1 -1
  182. {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/__init__.py +1 -1
  183. {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/sentiment_analyzer.py +1 -1
  184. {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/util.py +14 -4
  185. {nltk-3.2.1 → nltk-3.3}/nltk/sentiment/vader.py +41 -42
  186. {nltk-3.2.1 → nltk-3.3}/nltk/stem/__init__.py +1 -3
  187. {nltk-3.2.1 → nltk-3.3}/nltk/stem/api.py +7 -4
  188. nltk-3.3/nltk/stem/arlstem.py +369 -0
  189. {nltk-3.2.1 → nltk-3.3}/nltk/stem/isri.py +1 -1
  190. {nltk-3.2.1 → nltk-3.3}/nltk/stem/lancaster.py +39 -12
  191. nltk-3.3/nltk/stem/porter.py +710 -0
  192. {nltk-3.2.1 → nltk-3.3}/nltk/stem/regexp.py +2 -2
  193. {nltk-3.2.1 → nltk-3.3}/nltk/stem/rslp.py +1 -1
  194. {nltk-3.2.1 → nltk-3.3}/nltk/stem/snowball.py +537 -13
  195. {nltk-3.2.1 → nltk-3.3}/nltk/stem/util.py +11 -1
  196. {nltk-3.2.1 → nltk-3.3}/nltk/stem/wordnet.py +1 -1
  197. {nltk-3.2.1 → nltk-3.3}/nltk/tag/__init__.py +32 -7
  198. {nltk-3.2.1 → nltk-3.3}/nltk/tag/api.py +13 -8
  199. {nltk-3.2.1 → nltk-3.3}/nltk/tag/brill.py +4 -6
  200. {nltk-3.2.1 → nltk-3.3}/nltk/tag/crf.py +1 -1
  201. {nltk-3.2.1 → nltk-3.3}/nltk/tag/hmm.py +11 -11
  202. {nltk-3.2.1 → nltk-3.3}/nltk/tag/hunpos.py +4 -4
  203. {nltk-3.2.1 → nltk-3.3}/nltk/tag/mapping.py +1 -1
  204. {nltk-3.2.1 → nltk-3.3}/nltk/tag/perceptron.py +25 -10
  205. {nltk-3.2.1 → nltk-3.3}/nltk/tag/senna.py +25 -23
  206. {nltk-3.2.1 → nltk-3.3}/nltk/tag/sequential.py +19 -15
  207. {nltk-3.2.1 → nltk-3.3}/nltk/tag/stanford.py +59 -36
  208. {nltk-3.2.1 → nltk-3.3}/nltk/tag/tnt.py +11 -20
  209. {nltk-3.2.1 → nltk-3.3}/nltk/tag/util.py +1 -1
  210. {nltk-3.2.1 → nltk-3.3}/nltk/tbl/__init__.py +1 -1
  211. {nltk-3.2.1 → nltk-3.3}/nltk/tbl/demo.py +1 -1
  212. {nltk-3.2.1 → nltk-3.3}/nltk/tbl/erroranalysis.py +1 -1
  213. {nltk-3.2.1 → nltk-3.3}/nltk/tbl/feature.py +5 -7
  214. {nltk-3.2.1 → nltk-3.3}/nltk/tbl/rule.py +6 -6
  215. {nltk-3.2.1 → nltk-3.3}/nltk/tbl/template.py +18 -23
  216. {nltk-3.2.1 → nltk-3.3}/nltk/test/__init__.py +1 -1
  217. {nltk-3.2.1 → nltk-3.3}/nltk/test/all.py +7 -6
  218. {nltk-3.2.1 → nltk-3.3}/nltk/test/bnc.doctest +1 -1
  219. {nltk-3.2.1 → nltk-3.3}/nltk/test/ccg.doctest +1 -1
  220. {nltk-3.2.1 → nltk-3.3}/nltk/test/ccg_semantics.doctest +1 -1
  221. {nltk-3.2.1 → nltk-3.3}/nltk/test/chat80.doctest +1 -1
  222. {nltk-3.2.1 → nltk-3.3}/nltk/test/childes_fixt.py +1 -0
  223. {nltk-3.2.1 → nltk-3.3}/nltk/test/chunk.doctest +1 -1
  224. {nltk-3.2.1 → nltk-3.3}/nltk/test/classify.doctest +1 -1
  225. {nltk-3.2.1 → nltk-3.3}/nltk/test/classify_fixt.py +2 -1
  226. nltk-3.3/nltk/test/collections.doctest +20 -0
  227. {nltk-3.2.1 → nltk-3.3}/nltk/test/collocations.doctest +1 -1
  228. {nltk-3.2.1 → nltk-3.3}/nltk/test/compat.doctest +0 -4
  229. {nltk-3.2.1 → nltk-3.3}/nltk/test/compat_fixt.py +1 -0
  230. nltk-3.3/nltk/test/concordance.doctest +55 -0
  231. {nltk-3.2.1 → nltk-3.3}/nltk/test/corpus.doctest +38 -49
  232. {nltk-3.2.1 → nltk-3.3}/nltk/test/crubadan.doctest +1 -1
  233. {nltk-3.2.1 → nltk-3.3}/nltk/test/data.doctest +1 -1
  234. {nltk-3.2.1 → nltk-3.3}/nltk/test/dependency.doctest +1 -1
  235. {nltk-3.2.1 → nltk-3.3}/nltk/test/discourse.doctest +1 -1
  236. {nltk-3.2.1 → nltk-3.3}/nltk/test/discourse_fixt.py +1 -0
  237. {nltk-3.2.1 → nltk-3.3}/nltk/test/doctest_nose_plugin.py +8 -5
  238. {nltk-3.2.1 → nltk-3.3}/nltk/test/drt.doctest +1 -1
  239. {nltk-3.2.1 → nltk-3.3}/nltk/test/featgram.doctest +1 -1
  240. {nltk-3.2.1 → nltk-3.3}/nltk/test/featstruct.doctest +2 -3
  241. {nltk-3.2.1 → nltk-3.3}/nltk/test/framenet.doctest +82 -33
  242. {nltk-3.2.1 → nltk-3.3}/nltk/test/generate.doctest +1 -1
  243. {nltk-3.2.1 → nltk-3.3}/nltk/test/gensim.doctest +6 -7
  244. {nltk-3.2.1 → nltk-3.3}/nltk/test/gensim_fixt.py +1 -0
  245. {nltk-3.2.1 → nltk-3.3}/nltk/test/gluesemantics.doctest +13 -15
  246. {nltk-3.2.1 → nltk-3.3}/nltk/test/gluesemantics_malt.doctest +1 -1
  247. {nltk-3.2.1 → nltk-3.3}/nltk/test/gluesemantics_malt_fixt.py +1 -0
  248. {nltk-3.2.1 → nltk-3.3}/nltk/test/grammar.doctest +1 -1
  249. {nltk-3.2.1 → nltk-3.3}/nltk/test/grammartestsuites.doctest +1 -1
  250. {nltk-3.2.1 → nltk-3.3}/nltk/test/index.doctest +1 -1
  251. {nltk-3.2.1 → nltk-3.3}/nltk/test/inference.doctest +1 -1
  252. {nltk-3.2.1 → nltk-3.3}/nltk/test/inference_fixt.py +1 -0
  253. {nltk-3.2.1 → nltk-3.3}/nltk/test/internals.doctest +1 -1
  254. {nltk-3.2.1 → nltk-3.3}/nltk/test/japanese.doctest +1 -1
  255. {nltk-3.2.1 → nltk-3.3}/nltk/test/logic.doctest +1 -1
  256. {nltk-3.2.1 → nltk-3.3}/nltk/test/metrics.doctest +3 -3
  257. {nltk-3.2.1 → nltk-3.3}/nltk/test/misc.doctest +1 -1
  258. {nltk-3.2.1 → nltk-3.3}/nltk/test/nonmonotonic.doctest +1 -1
  259. {nltk-3.2.1 → nltk-3.3}/nltk/test/nonmonotonic_fixt.py +1 -0
  260. {nltk-3.2.1 → nltk-3.3}/nltk/test/parse.doctest +1 -1
  261. {nltk-3.2.1 → nltk-3.3}/nltk/test/portuguese_en.doctest +1 -1
  262. {nltk-3.2.1 → nltk-3.3}/nltk/test/probability.doctest +1 -1
  263. {nltk-3.2.1 → nltk-3.3}/nltk/test/probability_fixt.py +2 -1
  264. {nltk-3.2.1 → nltk-3.3}/nltk/test/propbank.doctest +1 -1
  265. {nltk-3.2.1 → nltk-3.3}/nltk/test/relextract.doctest +1 -1
  266. {nltk-3.2.1 → nltk-3.3}/nltk/test/resolution.doctest +1 -1
  267. {nltk-3.2.1 → nltk-3.3}/nltk/test/runtests.py +35 -13
  268. {nltk-3.2.1 → nltk-3.3}/nltk/test/semantics.doctest +1 -1
  269. {nltk-3.2.1 → nltk-3.3}/nltk/test/sentiment.doctest +3 -3
  270. {nltk-3.2.1 → nltk-3.3}/nltk/test/sentiwordnet.doctest +1 -1
  271. {nltk-3.2.1 → nltk-3.3}/nltk/test/simple.doctest +1 -1
  272. {nltk-3.2.1 → nltk-3.3}/nltk/test/stem.doctest +2 -2
  273. {nltk-3.2.1 → nltk-3.3}/nltk/test/tag.doctest +1 -1
  274. {nltk-3.2.1 → nltk-3.3}/nltk/test/tokenize.doctest +109 -2
  275. {nltk-3.2.1 → nltk-3.3}/nltk/test/toolbox.doctest +1 -1
  276. {nltk-3.2.1 → nltk-3.3}/nltk/test/translate.doctest +1 -1
  277. {nltk-3.2.1 → nltk-3.3}/nltk/test/tree.doctest +1 -1
  278. {nltk-3.2.1 → nltk-3.3}/nltk/test/treeprettyprinter.doctest +1 -1
  279. {nltk-3.2.1 → nltk-3.3}/nltk/test/treetransforms.doctest +1 -1
  280. nltk-3.3/nltk/test/unit/test_aline.py +52 -0
  281. nltk-3.3/nltk/test/unit/test_chunk.py +56 -0
  282. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_classify.py +20 -18
  283. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_collocations.py +16 -7
  284. nltk-3.3/nltk/test/unit/test_concordance.py +98 -0
  285. nltk-3.3/nltk/test/unit/test_corenlp.py +1000 -0
  286. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_corpora.py +18 -1
  287. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_json2csv_corpus.py +4 -3
  288. nltk-3.3/nltk/test/unit/test_rte_classify.py +86 -0
  289. nltk-3.3/nltk/test/unit/test_senna.py +74 -0
  290. nltk-3.3/nltk/test/unit/test_stem.py +121 -0
  291. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_tgrep.py +4 -2
  292. nltk-3.3/nltk/test/unit/test_tokenize.py +168 -0
  293. nltk-3.3/nltk/test/unit/test_wordnet.py +134 -0
  294. nltk-3.3/nltk/test/unit/translate/test_bleu.py +244 -0
  295. nltk-3.3/nltk/test/unit/translate/test_gdfa.py +57 -0
  296. nltk-3.3/nltk/test/unit/translate/test_nist.py +37 -0
  297. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_stack_decoder.py +1 -1
  298. {nltk-3.2.1 → nltk-3.3}/nltk/test/util.doctest +1 -1
  299. {nltk-3.2.1 → nltk-3.3}/nltk/test/wordnet.doctest +17 -3
  300. {nltk-3.2.1 → nltk-3.3}/nltk/test/wordnet_fixt.py +1 -0
  301. {nltk-3.2.1 → nltk-3.3}/nltk/test/wordnet_lch.doctest +1 -1
  302. {nltk-3.2.1 → nltk-3.3}/nltk/test/wsd.doctest +1 -1
  303. {nltk-3.2.1 → nltk-3.3}/nltk/text.py +92 -39
  304. {nltk-3.2.1 → nltk-3.3}/nltk/tgrep.py +8 -7
  305. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/__init__.py +37 -15
  306. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/api.py +3 -4
  307. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/casual.py +10 -9
  308. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/mwe.py +2 -2
  309. nltk-3.3/nltk/tokenize/nist.py +173 -0
  310. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/punkt.py +186 -167
  311. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/regexp.py +13 -7
  312. nltk-3.3/nltk/tokenize/repp.py +151 -0
  313. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/sexpr.py +4 -6
  314. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/simple.py +7 -5
  315. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/stanford.py +18 -14
  316. nltk-3.3/nltk/tokenize/stanford_segmenter.py +246 -0
  317. {nltk-3.2.1 → nltk-3.3}/nltk/tokenize/texttiling.py +43 -45
  318. nltk-3.3/nltk/tokenize/toktok.py +155 -0
  319. nltk-3.3/nltk/tokenize/treebank.py +363 -0
  320. nltk-3.3/nltk/tokenize/util.py +261 -0
  321. {nltk-3.2.1 → nltk-3.3}/nltk/toolbox.py +4 -2
  322. {nltk-3.2.1 → nltk-3.3}/nltk/translate/__init__.py +1 -1
  323. {nltk-3.2.1 → nltk-3.3}/nltk/translate/api.py +50 -40
  324. {nltk-3.2.1 → nltk-3.3}/nltk/translate/bleu_score.py +221 -156
  325. nltk-3.3/nltk/translate/chrf_score.py +137 -0
  326. {nltk-3.2.1 → nltk-3.3}/nltk/translate/gale_church.py +32 -19
  327. {nltk-3.2.1 → nltk-3.3}/nltk/translate/gdfa.py +14 -10
  328. nltk-3.3/nltk/translate/gleu_score.py +193 -0
  329. {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm1.py +17 -8
  330. {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm2.py +4 -4
  331. {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm4.py +1 -1
  332. {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm5.py +1 -1
  333. {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm_model.py +4 -1
  334. {nltk-3.2.1 → nltk-3.3}/nltk/translate/metrics.py +1 -1
  335. nltk-3.3/nltk/translate/nist_score.py +178 -0
  336. {nltk-3.2.1 → nltk-3.3}/nltk/translate/phrase_based.py +1 -1
  337. {nltk-3.2.1 → nltk-3.3}/nltk/translate/ribes_score.py +1 -1
  338. {nltk-3.2.1 → nltk-3.3}/nltk/translate/stack_decoder.py +5 -1
  339. {nltk-3.2.1 → nltk-3.3}/nltk/tree.py +10 -8
  340. {nltk-3.2.1 → nltk-3.3}/nltk/treeprettyprinter.py +6 -6
  341. {nltk-3.2.1 → nltk-3.3}/nltk/twitter/__init__.py +1 -1
  342. {nltk-3.2.1 → nltk-3.3}/nltk/twitter/api.py +8 -3
  343. {nltk-3.2.1 → nltk-3.3}/nltk/twitter/common.py +9 -3
  344. {nltk-3.2.1 → nltk-3.3}/nltk/twitter/twitter_demo.py +1 -1
  345. {nltk-3.2.1 → nltk-3.3}/nltk/twitter/twitterclient.py +1 -1
  346. {nltk-3.2.1 → nltk-3.3}/nltk/twitter/util.py +5 -4
  347. {nltk-3.2.1 → nltk-3.3}/nltk/util.py +41 -654
  348. {nltk-3.2.1 → nltk-3.3}/nltk/wsd.py +2 -2
  349. {nltk-3.2.1 → nltk-3.3/nltk.egg-info}/PKG-INFO +13 -5
  350. {nltk-3.2.1 → nltk-3.3}/nltk.egg-info/SOURCES.txt +23 -1
  351. nltk-3.3/nltk.egg-info/requires.txt +31 -0
  352. {nltk-3.2.1 → nltk-3.3}/setup.cfg +0 -1
  353. {nltk-3.2.1 → nltk-3.3}/setup.py +32 -5
  354. nltk-3.2.1/nltk/VERSION +0 -1
  355. nltk-3.2.1/nltk/compat.py +0 -706
  356. nltk-3.2.1/nltk/corpus/reader/pl196x.py +0 -278
  357. nltk-3.2.1/nltk/corpus/reader/verbnet.py +0 -408
  358. nltk-3.2.1/nltk/corpus/reader/wordlist.py +0 -37
  359. nltk-3.2.1/nltk/six.py +0 -868
  360. nltk-3.2.1/nltk/stem/porter.py +0 -692
  361. nltk-3.2.1/nltk/test/unit/test_stem.py +0 -36
  362. nltk-3.2.1/nltk/test/unit/test_tokenize.py +0 -23
  363. nltk-3.2.1/nltk/test/unit/translate/test_bleu.py +0 -138
  364. nltk-3.2.1/nltk/tokenize/stanford_segmenter.py +0 -157
  365. nltk-3.2.1/nltk/tokenize/treebank.py +0 -124
  366. nltk-3.2.1/nltk/tokenize/util.py +0 -90
  367. {nltk-3.2.1 → nltk-3.3}/INSTALL.txt +0 -0
  368. {nltk-3.2.1 → nltk-3.3}/MANIFEST.in +0 -0
  369. {nltk-3.2.1 → nltk-3.3}/nltk/classify/positivenaivebayes.py +0 -0
  370. {nltk-3.2.1 → nltk-3.3}/nltk/corpus/reader/udhr.py +0 -0
  371. {nltk-3.2.1 → nltk-3.3}/nltk/inference/mace.py +0 -0
  372. {nltk-3.2.1 → nltk-3.3}/nltk/lazyimport.py +0 -0
  373. {nltk-3.2.1 → nltk-3.3}/nltk/misc/babelfish.py +0 -0
  374. {nltk-3.2.1 → nltk-3.3}/nltk/tag/brill_trainer.py +0 -0
  375. {nltk-3.2.1 → nltk-3.3}/nltk/tbl/api.py +0 -0
  376. {nltk-3.2.1 → nltk-3.3}/nltk/test/bleu.doctest +0 -0
  377. {nltk-3.2.1 → nltk-3.3}/nltk/test/childes.doctest +0 -0
  378. {nltk-3.2.1 → nltk-3.3}/nltk/test/corpus_fixt.py +0 -0
  379. {nltk-3.2.1 → nltk-3.3}/nltk/test/paice.doctest +0 -0
  380. {nltk-3.2.1 → nltk-3.3}/nltk/test/portuguese_en_fixt.py +0 -0
  381. {nltk-3.2.1 → nltk-3.3}/nltk/test/segmentation_fixt.py +0 -0
  382. {nltk-3.2.1 → nltk-3.3}/nltk/test/semantics_fixt.py +0 -0
  383. {nltk-3.2.1 → nltk-3.3}/nltk/test/translate_fixt.py +0 -0
  384. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/__init__.py +0 -0
  385. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_2x_compat.py +0 -0
  386. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_corpus_views.py +0 -0
  387. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_hmm.py +0 -0
  388. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_naivebayes.py +0 -0
  389. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_seekable_unicode_stream_reader.py +0 -0
  390. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_tag.py +0 -0
  391. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/test_twitter_auth.py +0 -0
  392. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/__init__.py +0 -0
  393. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm1.py +0 -0
  394. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm2.py +0 -0
  395. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm3.py +0 -0
  396. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm4.py +0 -0
  397. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm5.py +0 -0
  398. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/translate/test_ibm_model.py +0 -0
  399. {nltk-3.2.1 → nltk-3.3}/nltk/test/unit/utils.py +0 -0
  400. {nltk-3.2.1 → nltk-3.3}/nltk/translate/ibm3.py +0 -0
  401. {nltk-3.2.1 → nltk-3.3}/nltk/treetransforms.py +0 -0
  402. {nltk-3.2.1 → nltk-3.3}/nltk.egg-info/dependency_links.txt +0 -0
  403. {nltk-3.2.1 → nltk-3.3}/nltk.egg-info/not-zip-safe +0 -0
  404. {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-2016 NLTK Project
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 nltk import compat
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, compat.string_types):
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, compat.string_types): fileids = [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
- s = fileid.open().readline()
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 nltk import compat
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, compat.string_types):
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, compat.string_types):
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, compat.string_types):
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': '�lfric, Supplemental Homilies',
144
- 'coaelive.o3': '�lfric\'s Lives of Saints',
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': '�lfric\'s Catholic Homilies I',
157
- 'cocathom2.o3': '�lfric\'s Catholic Homilies II',
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': '�lfric\'s Epilogue to Genesis',
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, �thelred V',
192
- 'colaw6atr.o3': 'Laws, �thelred VI',
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': '�lfric\'s Letter to Sigefyrth',
201
- 'colsigewB': '�lfric\'s Letter to Sigeweard (B)',
202
- 'colsigewZ.o34': '�lfric\'s Letter to Sigeweard (Z)',
203
- 'colwgeat': '�lfric\'s Letter to Wulfgeat',
204
- 'colwsigeT': '�lfric\'s Letter to Wulfsige (T)',
205
- 'colwsigeXa.o34': '�lfric\'s Letter to Wulfsige (Xa)',
206
- 'colwstan1.o3': '�lfric\'s Letter to Wulfstan I',
207
- 'colwstan2.o3': '�lfric\'s Letter to Wulfstan II',
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': '�lfric\'s Preface to Catholic Homilies I',
223
- 'coprefcath2.o3': '�lfric\'s Preface to Catholic Homilies II',
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': '�lfric\'s Preface to Genesis',
226
- 'copreflives.o3': '�lfric\'s Preface to Lives of Saints',
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': '�lfric\'s De Temporibus Anni',
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-2016 NLTK Project
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('corpora/%s' % zip_name)
72
+ root = nltk.data.find('{}/{}'.format(self.subdir, zip_name))
56
73
  except LookupError as e:
57
- try: root = nltk.data.find('corpora/%s' % self.__name)
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('corpora/%s' % self.__name)
78
+ root = nltk.data.find('{}/{}'.format(self.subdir, self.__name))
62
79
  except LookupError as e:
63
- try: root = nltk.data.find('corpora/%s' % zip_name)
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-2016 NLTK Project
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 sys
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
- encoding='utf-8', fileobj=None, errors=None, newline=None):
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
- stream = BufferedGzipFile(self._path, 'rb')
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
- stream = BufferedGzipFile(self._entry, fileobj=stream)
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, self._entry))
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 = textwrap.fill(
634
- 'Resource %r not found. Please use the NLTK Downloader to '
635
- 'obtain the resource: >>> nltk.download()' %
636
- (resource_name,), initial_indent=' ', subsequent_indent=' ',
637
- width=66)
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
- regargs, varargs, varkwargs, defaults = inspect.getargspec(func)
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)