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: Corpus & Model Downloader
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
@@ -159,14 +159,14 @@ they didn't download that model.
159
159
  default: unzip or not?
160
160
 
161
161
  """
162
- import time, os, zipfile, sys, textwrap, threading, itertools
162
+ import time, os, zipfile, sys, textwrap, threading, itertools, shutil
163
163
  from hashlib import md5
164
164
 
165
165
  try:
166
166
  TKINTER = True
167
- from tkinter import (Tk, Frame, Label, Entry, Button, Canvas, Menu, IntVar,
168
- TclError)
169
- from tkinter.messagebox import showerror
167
+ from six.moves.tkinter import (Tk, Frame, Label, Entry, Button, Canvas,
168
+ Menu, IntVar, TclError)
169
+ from six.moves.tkinter_messagebox import showerror
170
170
  from nltk.draw.table import Table
171
171
  from nltk.draw.util import ShowText
172
172
  except:
@@ -174,8 +174,14 @@ except:
174
174
  TclError = ValueError
175
175
 
176
176
  from xml.etree import ElementTree
177
+
178
+ from six import string_types, text_type
179
+ from six.moves import input
180
+ from six.moves.urllib.request import urlopen
181
+ from six.moves.urllib.error import HTTPError, URLError
182
+
177
183
  import nltk
178
- from nltk import compat
184
+ from nltk.compat import python_2_unicode_compatible
179
185
  #urllib2 = nltk.internals.import_from_stdlib('urllib2')
180
186
 
181
187
 
@@ -183,7 +189,7 @@ from nltk import compat
183
189
  # Directory entry objects (from the data server's index file)
184
190
  ######################################################################
185
191
 
186
- @compat.python_2_unicode_compatible
192
+ @python_2_unicode_compatible
187
193
  class Package(object):
188
194
  """
189
195
  A directory entry for a downloadable package. These entries are
@@ -253,10 +259,10 @@ class Package(object):
253
259
 
254
260
  @staticmethod
255
261
  def fromxml(xml):
256
- if isinstance(xml, compat.string_types):
262
+ if isinstance(xml, string_types):
257
263
  xml = ElementTree.parse(xml)
258
264
  for key in xml.attrib:
259
- xml.attrib[key] = compat.text_type(xml.attrib[key])
265
+ xml.attrib[key] = text_type(xml.attrib[key])
260
266
  return Package(**xml.attrib)
261
267
 
262
268
  def __lt__(self, other):
@@ -265,7 +271,7 @@ class Package(object):
265
271
  def __repr__(self):
266
272
  return '<Package %s>' % self.id
267
273
 
268
- @compat.python_2_unicode_compatible
274
+ @python_2_unicode_compatible
269
275
  class Collection(object):
270
276
  """
271
277
  A directory entry for a collection of downloadable packages.
@@ -292,10 +298,10 @@ class Collection(object):
292
298
 
293
299
  @staticmethod
294
300
  def fromxml(xml):
295
- if isinstance(xml, compat.string_types):
301
+ if isinstance(xml, string_types):
296
302
  xml = ElementTree.parse(xml)
297
303
  for key in xml.attrib:
298
- xml.attrib[key] = compat.text_type(xml.attrib[key])
304
+ xml.attrib[key] = text_type(xml.attrib[key])
299
305
  children = [child.get('ref') for child in xml.findall('item')]
300
306
  return Collection(children=children, **xml.attrib)
301
307
 
@@ -472,7 +478,7 @@ class Downloader(object):
472
478
  print(' [%s] %s %s' % (prefix, info.id.ljust(20, '.'), name))
473
479
  lines += len(name.split('\n')) # for more_prompt
474
480
  if more_prompt and lines > 20:
475
- user_input = compat.raw_input("Hit Enter to continue: ")
481
+ user_input = input("Hit Enter to continue: ")
476
482
  if (user_input.lower() in ('x', 'q')): return
477
483
  lines = 0
478
484
  print()
@@ -504,7 +510,7 @@ class Downloader(object):
504
510
  #/////////////////////////////////////////////////////////////////
505
511
 
506
512
  def _info_or_id(self, info_or_id):
507
- if isinstance(info_or_id, compat.string_types):
513
+ if isinstance(info_or_id, string_types):
508
514
  return self.info(info_or_id)
509
515
  else:
510
516
  return info_or_id
@@ -610,7 +616,7 @@ class Downloader(object):
610
616
  yield StartDownloadMessage(info)
611
617
  yield ProgressMessage(5)
612
618
  try:
613
- infile = compat.urlopen(info.url)
619
+ infile = urlopen(info.url)
614
620
  with open(filepath, 'wb') as outfile:
615
621
  #print info.size
616
622
  num_blocks = max(1, info.size/(1024*16))
@@ -672,7 +678,7 @@ class Downloader(object):
672
678
  self._errors = True
673
679
  if not quiet:
674
680
  print("Error installing package. Retry? [n/y/e]")
675
- choice = compat.raw_input().strip()
681
+ choice = input().strip()
676
682
  if choice in ['y', 'Y']:
677
683
  if not self.download(msg.package.id, download_dir,
678
684
  quiet, force, prefix,
@@ -756,7 +762,7 @@ class Downloader(object):
756
762
  else:
757
763
  filepath = os.path.join(download_dir, info.filename)
758
764
  if download_dir != self._download_dir:
759
- status = self._pkg_status(info, filepath)
765
+ return self._pkg_status(info, filepath)
760
766
  else:
761
767
  if info.id not in self._status_cache:
762
768
  self._status_cache[info.id] = self._pkg_status(info,
@@ -822,7 +828,7 @@ class Downloader(object):
822
828
 
823
829
  # Download the index file.
824
830
  self._index = nltk.internals.ElementWrapper(
825
- ElementTree.parse(compat.urlopen(self._url)).getroot())
831
+ ElementTree.parse(urlopen(self._url)).getroot())
826
832
  self._index_timestamp = time.time()
827
833
 
828
834
  # Build a dictionary of packages.
@@ -853,8 +859,10 @@ class Downloader(object):
853
859
  for child in queue:
854
860
  if isinstance(child, Collection):
855
861
  queue.extend(child.children)
856
- else:
862
+ elif isinstance(child, Package):
857
863
  packages[child.id] = child
864
+ else:
865
+ pass
858
866
  collection.packages = packages.values()
859
867
 
860
868
  # Flush the status cache
@@ -995,7 +1003,7 @@ class DownloaderShell(object):
995
1003
  while True:
996
1004
  self._simple_interactive_menu(
997
1005
  'd) Download', 'l) List', ' u) Update', 'c) Config', 'h) Help', 'q) Quit')
998
- user_input = compat.raw_input('Downloader> ').strip()
1006
+ user_input = input('Downloader> ').strip()
999
1007
  if not user_input: print(); continue
1000
1008
  command = user_input.lower().split()[0]
1001
1009
  args = user_input.split()[1:]
@@ -1016,9 +1024,9 @@ class DownloaderShell(object):
1016
1024
  self._simple_interactive_update()
1017
1025
  else:
1018
1026
  print('Command %r unrecognized' % user_input)
1019
- except compat.HTTPError as e:
1027
+ except HTTPError as e:
1020
1028
  print('Error reading from server: %s'%e)
1021
- except compat.URLError as e:
1029
+ except URLError as e:
1022
1030
  print('Error connecting to server: %s'%e.reason)
1023
1031
  # try checking if user_input is a package name, &
1024
1032
  # downloading it?
@@ -1033,7 +1041,7 @@ class DownloaderShell(object):
1033
1041
  while True:
1034
1042
  print()
1035
1043
  print('Download which package (l=list; x=cancel)?')
1036
- user_input = compat.raw_input(' Identifier> ')
1044
+ user_input = input(' Identifier> ')
1037
1045
  if user_input.lower()=='l':
1038
1046
  self._ds.list(self._ds.download_dir, header=False,
1039
1047
  more_prompt=True, skip_installed=True)
@@ -1063,7 +1071,7 @@ class DownloaderShell(object):
1063
1071
  print(' [ ] %s %s' % (pid.ljust(20, '.'), name))
1064
1072
  print()
1065
1073
 
1066
- user_input = compat.raw_input(' Identifier> ')
1074
+ user_input = input(' Identifier> ')
1067
1075
  if user_input.lower()=='o':
1068
1076
  for pid, pname in stale_packages:
1069
1077
  try: self._ds.download(pid, prefix=' ')
@@ -1101,11 +1109,11 @@ class DownloaderShell(object):
1101
1109
  self._simple_interactive_menu(
1102
1110
  's) Show Config', 'u) Set Server URL',
1103
1111
  'd) Set Data Dir', 'm) Main Menu')
1104
- user_input = compat.raw_input('Config> ').strip().lower()
1112
+ user_input = input('Config> ').strip().lower()
1105
1113
  if user_input == 's':
1106
1114
  self._show_config()
1107
1115
  elif user_input == 'd':
1108
- new_dl_dir = compat.raw_input(' New Directory> ').strip()
1116
+ new_dl_dir = input(' New Directory> ').strip()
1109
1117
  if new_dl_dir in ('', 'x', 'q', 'X', 'Q'):
1110
1118
  print(' Cancelled!')
1111
1119
  elif os.path.isdir(new_dl_dir):
@@ -1114,7 +1122,7 @@ class DownloaderShell(object):
1114
1122
  print(('Directory %r not found! Create it first.' %
1115
1123
  new_dl_dir))
1116
1124
  elif user_input == 'u':
1117
- new_url = compat.raw_input(' New URL> ').strip()
1125
+ new_url = input(' New URL> ').strip()
1118
1126
  if new_url in ('', 'x', 'q', 'X', 'Q'):
1119
1127
  print(' Cancelled!')
1120
1128
  else:
@@ -1232,9 +1240,9 @@ class DownloaderGUI(object):
1232
1240
  self._init_menu()
1233
1241
  try:
1234
1242
  self._fill_table()
1235
- except compat.HTTPError as e:
1243
+ except HTTPError as e:
1236
1244
  showerror('Error reading from server', e)
1237
- except compat.URLError as e:
1245
+ except URLError as e:
1238
1246
  showerror('Error connecting to server', e.reason)
1239
1247
 
1240
1248
  self._show_info()
@@ -1414,9 +1422,9 @@ class DownloaderGUI(object):
1414
1422
  self._ds.clear_status_cache()
1415
1423
  try:
1416
1424
  self._fill_table()
1417
- except compat.HTTPError as e:
1425
+ except HTTPError as e:
1418
1426
  showerror('Error reading from server', e)
1419
- except compat.URLError as e:
1427
+ except URLError as e:
1420
1428
  showerror('Error connecting to server', e.reason)
1421
1429
  self._table.select(0)
1422
1430
 
@@ -1441,7 +1449,7 @@ class DownloaderGUI(object):
1441
1449
 
1442
1450
  def _table_reprfunc(self, row, col, val):
1443
1451
  if self._table.column_names[col].endswith('Size'):
1444
- if isinstance(val, compat.string_types): return ' %s' % val
1452
+ if isinstance(val, string_types): return ' %s' % val
1445
1453
  elif val < 1024**2: return ' %.1f KB' % (val/1024.**1)
1446
1454
  elif val < 1024**3: return ' %.1f MB' % (val/1024.**2)
1447
1455
  else: return ' %.1f GB' % (val/1024.**3)
@@ -1467,9 +1475,9 @@ class DownloaderGUI(object):
1467
1475
  self._ds.download_dir = download_dir
1468
1476
  try:
1469
1477
  self._fill_table()
1470
- except compat.HTTPError as e:
1478
+ except HTTPError as e:
1471
1479
  showerror('Error reading from server', e)
1472
- except compat.URLError as e:
1480
+ except URLError as e:
1473
1481
  showerror('Error connecting to server', e.reason)
1474
1482
  self._show_info()
1475
1483
 
@@ -1489,9 +1497,9 @@ class DownloaderGUI(object):
1489
1497
  self._tab = self._tab_names[i-1].lower()
1490
1498
  try:
1491
1499
  return self._fill_table()
1492
- except compat.HTTPError as e:
1500
+ except HTTPError as e:
1493
1501
  showerror('Error reading from server', e)
1494
- except compat.URLError as e:
1502
+ except URLError as e:
1495
1503
  showerror('Error connecting to server', e.reason)
1496
1504
 
1497
1505
  def _next_tab(self, *e):
@@ -1500,18 +1508,18 @@ class DownloaderGUI(object):
1500
1508
  self._tab = self._tab_names[i+1].lower()
1501
1509
  try:
1502
1510
  return self._fill_table()
1503
- except compat.HTTPError as e:
1511
+ except HTTPError as e:
1504
1512
  showerror('Error reading from server', e)
1505
- except compat.URLError as e:
1513
+ except URLError as e:
1506
1514
  showerror('Error connecting to server', e.reason)
1507
1515
 
1508
1516
  def _select_tab(self, event):
1509
1517
  self._tab = event.widget['text'].lower()
1510
1518
  try:
1511
1519
  self._fill_table()
1512
- except compat.HTTPError as e:
1520
+ except HTTPError as e:
1513
1521
  showerror('Error reading from server', e)
1514
- except compat.URLError as e:
1522
+ except URLError as e:
1515
1523
  showerror('Error connecting to server', e.reason)
1516
1524
 
1517
1525
  _tab = 'collections'
@@ -1753,14 +1761,10 @@ class DownloaderGUI(object):
1753
1761
  "Written by Edward Loper")
1754
1762
  TITLE = 'About: NLTK Downloader'
1755
1763
  try:
1756
- from tkMessageBox import Message
1764
+ from six.moves.tkinter_messagebox import Message
1757
1765
  Message(message=ABOUT, title=TITLE).show()
1758
1766
  except ImportError:
1759
- try:
1760
- from tkinter.messagebox import Message
1761
- Message(message=ABOUT, title=TITLE).show()
1762
- except ImportError:
1763
- ShowText(self.top, TITLE, ABOUT)
1767
+ ShowText(self.top, TITLE, ABOUT)
1764
1768
 
1765
1769
  #/////////////////////////////////////////////////////////////////
1766
1770
  # Progress Bar
@@ -1965,7 +1969,7 @@ def md5_hexdigest(file):
1965
1969
  Calculate and return the MD5 checksum for a given file.
1966
1970
  ``file`` may either be a filename or an open stream.
1967
1971
  """
1968
- if isinstance(file, compat.string_types):
1972
+ if isinstance(file, string_types):
1969
1973
  with open(file, 'rb') as infile:
1970
1974
  return _md5_hexdigest(infile)
1971
1975
  return _md5_hexdigest(file)
@@ -2030,13 +2034,12 @@ def _unzip_iter(filename, root, verbose=True):
2030
2034
  for i, filename in enumerate(filelist):
2031
2035
  filepath = os.path.join(root, *filename.split('/'))
2032
2036
 
2033
- with open(filepath, 'wb') as outfile:
2034
- try:
2035
- contents = zf.read(filename)
2036
- except Exception as e:
2037
- yield ErrorMessage(filename, e)
2038
- return
2039
- outfile.write(contents)
2037
+ try:
2038
+ with open(filepath, 'wb') as dstfile, zf.open(filename) as srcfile:
2039
+ shutil.copyfileobj(srcfile, dstfile)
2040
+ except Exception as e:
2041
+ yield ErrorMessage(filename, e)
2042
+ return
2040
2043
 
2041
2044
  if verbose and (i*10/len(filelist) > (i-1)*10/len(filelist)):
2042
2045
  sys.stdout.write('.')
@@ -2255,7 +2258,8 @@ if __name__ == '__main__':
2255
2258
  parser.add_option("-e", "--exit-on-error", dest="halt_on_error", action="store_true",
2256
2259
  default=False, help="exit if an error occurs")
2257
2260
  parser.add_option("-u", "--url", dest="server_index_url",
2258
- default=None, help="download server index url")
2261
+ default=os.environ.get('NLTK_DOWNLOAD_URL'),
2262
+ help="download server index url")
2259
2263
 
2260
2264
  (options, args) = parser.parse_args()
2261
2265
 
@@ -1,15 +1,14 @@
1
1
  # Natural Language Toolkit: graphical representations package
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
  # Steven Bird <stevenbird1@gmail.com>
6
6
  # URL: <http://nltk.org/>
7
7
  # For license information, see LICENSE.TXT
8
8
 
9
9
  # Import Tkinter-based modules if Tkinter is installed
10
- import nltk.compat
11
10
  try:
12
- import tkinter
11
+ from six.moves import tkinter
13
12
  except ImportError:
14
13
  import warnings
15
14
  warnings.warn("nltk.draw package not loaded "
@@ -18,9 +17,10 @@ else:
18
17
  from nltk.draw.cfg import ProductionList, CFGEditor, CFGDemo
19
18
  from nltk.draw.tree import (TreeSegmentWidget, tree_to_treesegment,
20
19
  TreeWidget, TreeView, draw_trees)
21
- from nltk.draw.dispersion import dispersion_plot
22
20
  from nltk.draw.table import Table
23
21
 
22
+ from nltk.draw.dispersion import dispersion_plot
23
+
24
24
  # skip doctests from this package
25
25
  def setup_module(module):
26
26
  from nose import SkipTest
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: CFG visualization
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
@@ -46,13 +46,11 @@ Visualization tools for CFGs.
46
46
  # - disconnect top & bottom -- right click
47
47
  # - if connected to top & bottom, then disconnect
48
48
 
49
-
50
-
51
- import nltk.compat
52
49
  import re
53
50
 
54
- from tkinter import (Button, Canvas, Entry, Frame, IntVar, Label,
55
- Scrollbar, Text, Tk, Toplevel)
51
+ from six import string_types
52
+ from six.moves.tkinter import (Button, Canvas, Entry, Frame, IntVar, Label,
53
+ Scrollbar, Text, Tk, Toplevel)
56
54
 
57
55
  from nltk.grammar import (CFG, _read_cfg_production,
58
56
  Nonterminal, nonterminals)
@@ -60,7 +58,6 @@ from nltk.tree import Tree
60
58
  from nltk.draw.tree import TreeSegmentWidget, tree_to_treesegment
61
59
  from nltk.draw.util import (CanvasFrame, ColorizedList, ShowText,
62
60
  SymbolWidget, TextWidget)
63
- from nltk import compat
64
61
 
65
62
  ######################################################################
66
63
  # Production List
@@ -617,7 +614,7 @@ class CFGDemo(object):
617
614
  isinstance(widget, TreeSegmentWidget) and
618
615
  node.symbol == widget.label().text()):
619
616
  pass # matching nonterminal
620
- elif (isinstance(node, compat.string_types) and
617
+ elif (isinstance(node, string_types) and
621
618
  isinstance(widget, TextWidget) and
622
619
  node == widget.text()):
623
620
  pass # matching nonterminal
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Dispersion Plots
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
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Table widget
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
@@ -11,10 +11,10 @@ Tkinter widgets for displaying multi-column listboxes and tables.
11
11
 
12
12
  from __future__ import division
13
13
 
14
- import nltk.compat
14
+
15
15
  import operator
16
16
 
17
- from tkinter import (Frame, Label, Listbox, Scrollbar, Tk)
17
+ from six.moves.tkinter import (Frame, Label, Listbox, Scrollbar, Tk)
18
18
 
19
19
 
20
20
  ######################################################################
@@ -808,7 +808,7 @@ class Table(object):
808
808
  """
809
809
  Delete the ``row_index``th row from this table.
810
810
  """
811
- if isinstance(index, slice):
811
+ if isinstance(row_index, slice):
812
812
  raise ValueError('Slicing not supported')
813
813
  if isinstance(row_index, tuple) and len(row_index)==2:
814
814
  raise ValueError('Cannot delete a single cell!')
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Graphical Representations for Trees
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
@@ -9,10 +9,7 @@
9
9
  Graphically display a Tree.
10
10
  """
11
11
 
12
- import nltk.compat
13
- import sys
14
-
15
- from tkinter import IntVar, Menu, Tk
12
+ from six.moves.tkinter import IntVar, Menu, Tk
16
13
 
17
14
  from nltk.util import in_idle
18
15
  from nltk.tree import Tree
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Drawing utilities
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
@@ -33,13 +33,12 @@ structures. For more information, see the CLIG
33
33
  homepage (http://www.ags.uni-sb.de/~konrad/clig.html).
34
34
 
35
35
  """
36
-
37
-
38
- import nltk.compat
39
- from tkinter import (Button, Canvas, Entry, Frame, Label, Menu, Menubutton,
40
- RAISED, Scrollbar, StringVar, Text, Tk, Toplevel, Widget)
41
-
42
- import tkinter.font, tkinter.messagebox, tkinter.filedialog
36
+ from abc import ABCMeta, abstractmethod
37
+ from six import add_metaclass
38
+ from six.moves.tkinter import (Button, Canvas, Entry, Frame, Label, Menu,
39
+ Menubutton, Scrollbar, StringVar, Text, Tk,
40
+ Toplevel, Widget, RAISED)
41
+ from six.moves.tkinter_tkfiledialog import asksaveasfilename
43
42
 
44
43
  from nltk.util import in_idle
45
44
 
@@ -47,6 +46,8 @@ from nltk.util import in_idle
47
46
  ## CanvasWidget
48
47
  ##//////////////////////////////////////////////////////
49
48
 
49
+
50
+ @add_metaclass(ABCMeta)
50
51
  class CanvasWidget(object):
51
52
  """
52
53
  A collection of graphical elements and bindings used to display a
@@ -664,6 +665,7 @@ class CanvasWidget(object):
664
665
  ## Defined by subclass
665
666
  ##//////////////////////////////////////////////////////
666
667
 
668
+ @abstractmethod
667
669
  def _tags(self):
668
670
  """
669
671
  :return: a list of canvas tags for all graphical elements
@@ -671,7 +673,6 @@ class CanvasWidget(object):
671
673
  elements managed by its child widgets.
672
674
  :rtype: list of int
673
675
  """
674
- raise NotImplementedError()
675
676
 
676
677
  def _manage(self):
677
678
  """
@@ -682,7 +683,6 @@ class CanvasWidget(object):
682
683
 
683
684
  :rtype: None
684
685
  """
685
- pass
686
686
 
687
687
  def _update(self, child):
688
688
  """
@@ -693,7 +693,6 @@ class CanvasWidget(object):
693
693
  :type child: CanvasWidget
694
694
  :rtype: None
695
695
  """
696
- pass
697
696
 
698
697
  ##//////////////////////////////////////////////////////
699
698
  ## Basic widgets.
@@ -1705,18 +1704,21 @@ class CanvasFrame(object):
1705
1704
  :rtype: None
1706
1705
  """
1707
1706
  if filename is None:
1708
- from tkinter.filedialog import asksaveasfilename
1709
1707
  ftypes = [('Postscript files', '.ps'),
1710
1708
  ('All files', '*')]
1711
1709
  filename = asksaveasfilename(filetypes=ftypes,
1712
1710
  defaultextension='.ps')
1713
1711
  if not filename: return
1714
1712
  (x0, y0, w, h) = self.scrollregion()
1715
- self._canvas.postscript(file=filename, x=x0, y=y0,
1713
+ postscript = self._canvas.postscript(x=x0, y=y0,
1716
1714
  width=w+2, height=h+2,
1717
1715
  pagewidth=w+2, # points = 1/72 inch
1718
1716
  pageheight=h+2, # points = 1/72 inch
1719
1717
  pagex=0, pagey=0)
1718
+ # workaround for bug in Tk font handling
1719
+ postscript = postscript.replace(' 0 scalefont ', ' 9 scalefont ')
1720
+ with open(filename, 'wb') as f:
1721
+ f.write(postscript.encode('utf8'))
1720
1722
 
1721
1723
  def scrollregion(self):
1722
1724
  """
@@ -2034,15 +2036,15 @@ class ColorizedList(object):
2034
2036
  #////////////////////////////////////////////////////////////
2035
2037
  # Abstract methods
2036
2038
  #////////////////////////////////////////////////////////////
2037
-
2039
+ @abstractmethod
2038
2040
  def _init_colortags(self, textwidget, options):
2039
2041
  """
2040
2042
  Set up any colortags that will be used by this colorized list.
2041
2043
  E.g.:
2042
2044
  >>> textwidget.tag_config('terminal', foreground='black')
2043
2045
  """
2044
- raise NotImplementedError()
2045
2046
 
2047
+ @abstractmethod
2046
2048
  def _item_repr(self, item):
2047
2049
  """
2048
2050
  Return a list of (text, colortag) tuples that make up the
@@ -2050,7 +2052,6 @@ class ColorizedList(object):
2050
2052
  representations may not span multiple lines. I.e., the text
2051
2053
  strings returned may not contain newline characters.
2052
2054
  """
2053
- raise NotImplementedError()
2054
2055
 
2055
2056
  #////////////////////////////////////////////////////////////
2056
2057
  # Item Access
@@ -2353,4 +2354,3 @@ def demo():
2353
2354
 
2354
2355
  if __name__ == '__main__':
2355
2356
  demo()
2356
-