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
@@ -0,0 +1,365 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Natural Language Toolkit: Compatibility
3
+ #
4
+ # Copyright (C) 2001-2018 NLTK Project
5
+ #
6
+ # URL: <http://nltk.org/>
7
+ # For license information, see LICENSE.TXT
8
+
9
+ from __future__ import absolute_import, print_function
10
+ import os
11
+ import sys
12
+ from functools import update_wrapper, wraps
13
+ import fractions
14
+ import unicodedata
15
+
16
+ from six import string_types, text_type
17
+
18
+ # Python 2/3 compatibility layer. Based on six.
19
+
20
+ PY3 = sys.version_info[0] == 3
21
+
22
+ if PY3:
23
+ def get_im_class(meth):
24
+ return meth.__self__.__class__
25
+
26
+ import io
27
+ StringIO = io.StringIO
28
+ BytesIO = io.BytesIO
29
+
30
+ from datetime import timezone
31
+ UTC = timezone.utc
32
+
33
+ from tempfile import TemporaryDirectory
34
+
35
+ else:
36
+ def get_im_class(meth):
37
+ return meth.im_class
38
+
39
+ try:
40
+ from cStringIO import StringIO
41
+ except ImportError:
42
+ from StringIO import StringIO
43
+ BytesIO = StringIO
44
+
45
+ from datetime import tzinfo, timedelta
46
+
47
+ ZERO = timedelta(0)
48
+ HOUR = timedelta(hours=1)
49
+
50
+ # A UTC class for python 2.7
51
+ class UTC(tzinfo):
52
+ """UTC"""
53
+
54
+ def utcoffset(self, dt):
55
+ return ZERO
56
+
57
+ def tzname(self, dt):
58
+ return "UTC"
59
+
60
+ def dst(self, dt):
61
+ return ZERO
62
+
63
+ UTC = UTC()
64
+
65
+ import csv
66
+ import codecs
67
+ import cStringIO
68
+
69
+ class UnicodeWriter:
70
+ """
71
+ A CSV writer which will write rows to CSV file "f",
72
+ which is encoded in the given encoding.
73
+ see https://docs.python.org/2/library/csv.html
74
+ """
75
+
76
+ def __init__(self, f, dialect=csv.excel, encoding="utf-8",
77
+ errors='replace', **kwds):
78
+ # Redirect output to a queue
79
+ self.queue = cStringIO.StringIO()
80
+ self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
81
+ self.stream = f
82
+ encoder_cls = codecs.getincrementalencoder(encoding)
83
+ self.encoder = encoder_cls(errors=errors)
84
+
85
+ def encode(self, data):
86
+ if isinstance(data, string_types):
87
+ return data.encode("utf-8")
88
+ else:
89
+ return data
90
+
91
+ def writerow(self, row):
92
+ self.writer.writerow([self.encode(s) for s in row])
93
+ # Fetch UTF-8 output from the queue ...
94
+ data = self.queue.getvalue()
95
+ data = data.decode("utf-8")
96
+ # ... and reencode it into the target encoding
97
+ data = self.encoder.encode(data, 'replace')
98
+ # write to the target stream
99
+ self.stream.write(data)
100
+ # empty queue
101
+ self.queue.truncate(0)
102
+
103
+ import warnings as _warnings
104
+ import os as _os
105
+ from tempfile import mkdtemp
106
+
107
+ class TemporaryDirectory(object):
108
+ """Create and return a temporary directory. This has the same
109
+ behavior as mkdtemp but can be used as a context manager. For
110
+ example:
111
+
112
+ with TemporaryDirectory() as tmpdir:
113
+ ...
114
+
115
+ Upon exiting the context, the directory and everything contained
116
+ in it are removed.
117
+
118
+ http://stackoverflow.com/questions/19296146/tempfile-temporarydirectory-context-manager-in-python-2-7
119
+ """
120
+
121
+ def __init__(self, suffix="", prefix="tmp", dir=None):
122
+ self._closed = False
123
+ self.name = None # Handle mkdtemp raising an exception
124
+ self.name = mkdtemp(suffix, prefix, dir)
125
+
126
+ def __repr__(self):
127
+ return "<{} {!r}>".format(self.__class__.__name__, self.name)
128
+
129
+ def __enter__(self):
130
+ return self.name
131
+
132
+ def cleanup(self, _warn=False):
133
+ if self.name and not self._closed:
134
+ try:
135
+ self._rmtree(self.name)
136
+ except (TypeError, AttributeError) as ex:
137
+ # Issue #10188: Emit a warning on stderr
138
+ # if the directory could not be cleaned
139
+ # up due to missing globals
140
+ if "None" not in str(ex):
141
+ raise
142
+ print("ERROR: {!r} while cleaning up {!r}".format(ex,
143
+ self),
144
+ file=sys.stderr)
145
+ return
146
+ self._closed = True
147
+ if _warn:
148
+ self._warn("Implicitly cleaning up {!r}".format(self),
149
+ Warning)
150
+
151
+ def __exit__(self, exc, value, tb):
152
+ self.cleanup()
153
+
154
+ def __del__(self):
155
+ # Issue a Warning if implicit cleanup needed
156
+ self.cleanup(_warn=True)
157
+
158
+ # XXX (ncoghlan): The following code attempts to make
159
+ # this class tolerant of the module nulling out process
160
+ # that happens during CPython interpreter shutdown
161
+ # Alas, it doesn't actually manage it. See issue #10188
162
+ _listdir = staticmethod(_os.listdir)
163
+ _path_join = staticmethod(_os.path.join)
164
+ _isdir = staticmethod(_os.path.isdir)
165
+ _islink = staticmethod(_os.path.islink)
166
+ _remove = staticmethod(_os.remove)
167
+ _rmdir = staticmethod(_os.rmdir)
168
+ _warn = _warnings.warn
169
+
170
+ def _rmtree(self, path):
171
+ # Essentially a stripped down version of shutil.rmtree. We can't
172
+ # use globals because they may be None'ed out at shutdown.
173
+ for name in self._listdir(path):
174
+ fullname = self._path_join(path, name)
175
+ try:
176
+ isdir = (self._isdir(fullname) and not
177
+ self._islink(fullname))
178
+ except OSError:
179
+ isdir = False
180
+ if isdir:
181
+ self._rmtree(fullname)
182
+ else:
183
+ try:
184
+ self._remove(fullname)
185
+ except OSError:
186
+ pass
187
+ try:
188
+ self._rmdir(path)
189
+ except OSError:
190
+ pass
191
+
192
+ # ======= Compatibility for datasets that care about Python versions ========
193
+
194
+ # The following datasets have a /PY3 subdirectory containing
195
+ # a full copy of the data which has been re-encoded or repickled.
196
+ DATA_UPDATES = [("chunkers", "maxent_ne_chunker"),
197
+ ("help", "tagsets"),
198
+ ("taggers", "maxent_treebank_pos_tagger"),
199
+ ("tokenizers", "punkt")]
200
+
201
+ _PY3_DATA_UPDATES = [os.path.join(*path_list) for path_list in DATA_UPDATES]
202
+
203
+
204
+ def add_py3_data(path):
205
+ if PY3:
206
+ for item in _PY3_DATA_UPDATES:
207
+ if item in str(path) and "/PY3" not in str(path):
208
+ pos = path.index(item) + len(item)
209
+ if path[pos:pos + 4] == ".zip":
210
+ pos += 4
211
+ path = path[:pos] + "/PY3" + path[pos:]
212
+ break
213
+ return path
214
+
215
+
216
+ # for use in adding /PY3 to the second (filename) argument
217
+ # of the file pointers in data.py
218
+ def py3_data(init_func):
219
+ def _decorator(*args, **kwargs):
220
+ args = (args[0], add_py3_data(args[1])) + args[2:]
221
+ return init_func(*args, **kwargs)
222
+ return wraps(init_func)(_decorator)
223
+
224
+
225
+ # ======= Compatibility layer for __str__ and __repr__ ==========
226
+ def remove_accents(text):
227
+
228
+ if isinstance(text, bytes):
229
+ text = text.decode('ascii')
230
+
231
+ category = unicodedata.category # this gives a small (~10%) speedup
232
+ return ''.join(
233
+ c for c in unicodedata.normalize('NFKD', text) if category(c) != 'Mn'
234
+ )
235
+
236
+
237
+ # Select the best transliteration method:
238
+ try:
239
+ # Older versions of Unidecode are licensed under Artistic License;
240
+ # assume an older version is installed.
241
+ from unidecode import unidecode as transliterate
242
+ except ImportError:
243
+ try:
244
+ # text-unidecode implementation is worse than Unidecode
245
+ # implementation so Unidecode is preferred.
246
+ from text_unidecode import unidecode as transliterate
247
+ except ImportError:
248
+ # This transliteration method should be enough
249
+ # for many Western languages.
250
+ transliterate = remove_accents
251
+
252
+
253
+ def python_2_unicode_compatible(klass):
254
+ """
255
+ This decorator defines __unicode__ method and fixes
256
+ __repr__ and __str__ methods under Python 2.
257
+
258
+ To support Python 2 and 3 with a single code base,
259
+ define __str__ and __repr__ methods returning unicode
260
+ text and apply this decorator to the class.
261
+
262
+ Original __repr__ and __str__ would be available
263
+ as unicode_repr and __unicode__ (under both Python 2
264
+ and Python 3).
265
+ """
266
+
267
+ if not issubclass(klass, object):
268
+ raise ValueError("This decorator doesn't work for old-style classes")
269
+
270
+ # both __unicode__ and unicode_repr are public because they
271
+ # may be useful in console under Python 2.x
272
+
273
+ # if __str__ or __repr__ are not overriden in a subclass,
274
+ # they may be already fixed by this decorator in a parent class
275
+ # and we shouldn't them again
276
+
277
+ if not _was_fixed(klass.__str__):
278
+ klass.__unicode__ = klass.__str__
279
+ if not PY3:
280
+ klass.__str__ = _7bit(_transliterated(klass.__unicode__))
281
+
282
+ if not _was_fixed(klass.__repr__):
283
+ klass.unicode_repr = klass.__repr__
284
+ if not PY3:
285
+ klass.__repr__ = _7bit(klass.unicode_repr)
286
+
287
+ return klass
288
+
289
+
290
+ def unicode_repr(obj):
291
+ """
292
+ For classes that was fixed with @python_2_unicode_compatible
293
+ ``unicode_repr`` returns ``obj.unicode_repr()``; for unicode strings
294
+ the result is returned without "u" letter (to make output the
295
+ same under Python 2.x and Python 3.x); for other variables
296
+ it is the same as ``repr``.
297
+ """
298
+ if PY3:
299
+ return repr(obj)
300
+
301
+ # Python 2.x
302
+ if hasattr(obj, 'unicode_repr'):
303
+ return obj.unicode_repr()
304
+
305
+ if isinstance(obj, text_type):
306
+ return repr(obj)[1:] # strip "u" letter from output
307
+
308
+ return repr(obj)
309
+
310
+
311
+ def _transliterated(method):
312
+ def wrapper(self):
313
+ return transliterate(method(self))
314
+
315
+ update_wrapper(wrapper, method, ["__name__", "__doc__"])
316
+ if hasattr(method, "_nltk_compat_7bit"):
317
+ wrapper._nltk_compat_7bit = method._nltk_compat_7bit
318
+
319
+ wrapper._nltk_compat_transliterated = True
320
+ return wrapper
321
+
322
+
323
+ def _7bit(method):
324
+ def wrapper(self):
325
+ return method(self).encode('ascii', 'backslashreplace')
326
+
327
+ update_wrapper(wrapper, method, ["__name__", "__doc__"])
328
+
329
+ if hasattr(method, "_nltk_compat_transliterated"):
330
+ wrapper._nltk_compat_transliterated = (
331
+ method._nltk_compat_transliterated
332
+ )
333
+
334
+ wrapper._nltk_compat_7bit = True
335
+ return wrapper
336
+
337
+
338
+ def _was_fixed(method):
339
+ return (getattr(method, "_nltk_compat_7bit", False) or
340
+ getattr(method, "_nltk_compat_transliterated", False))
341
+
342
+
343
+ class Fraction(fractions.Fraction):
344
+ """
345
+ This is a simplified backwards compatible version of fractions.Fraction
346
+ from Python >=3.5. It adds the `_normalize` parameter such that it does
347
+ not normalize the denominator to the Greatest Common Divisor (gcd) when
348
+ the numerator is 0.
349
+
350
+ This is most probably only used by the nltk.translate.bleu_score.py where
351
+ numerator and denominator of the different ngram precisions are mutable.
352
+ But the idea of "mutable" fraction might not be applicable to other usages,
353
+ See http://stackoverflow.com/questions/34561265
354
+
355
+ This objects should be deprecated once NLTK stops supporting Python < 3.5
356
+ See https://github.com/nltk/nltk/issues/1330
357
+ """
358
+ def __new__(cls, numerator=0, denominator=None, _normalize=True):
359
+ cls = super(Fraction, cls).__new__(cls, numerator, denominator)
360
+ # To emulate fraction.Fraction.from_float across Python >=2.7,
361
+ # check that numerator is an integer and denominator is not None.
362
+ if not _normalize and type(numerator) == int and denominator:
363
+ cls._numerator = numerator
364
+ cls._denominator = denominator
365
+ return cls
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Corpus Readers
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
@@ -106,8 +106,10 @@ dependency_treebank = LazyCorpusLoader(
106
106
  floresta = LazyCorpusLoader(
107
107
  'floresta', BracketParseCorpusReader, r'(?!\.).*\.ptb', '#',
108
108
  tagset='unknown', encoding='ISO-8859-15')
109
- framenet = LazyCorpusLoader(
109
+ framenet15 = LazyCorpusLoader(
110
110
  'framenet_v15', FramenetCorpusReader, ['frRelation.xml','frameIndex.xml','fulltextIndex.xml','luIndex.xml','semTypes.xml'])
111
+ framenet = LazyCorpusLoader(
112
+ 'framenet_v17', FramenetCorpusReader, ['frRelation.xml','frameIndex.xml','fulltextIndex.xml','luIndex.xml','semTypes.xml'])
111
113
  gazetteers = LazyCorpusLoader(
112
114
  'gazetteers', WordListCorpusReader, r'(?!LICENSE|\.).*\.txt',
113
115
  encoding='ISO-8859-2')
@@ -118,9 +120,6 @@ genesis = LazyCorpusLoader(
118
120
  ('.*', 'utf_8')])
119
121
  gutenberg = LazyCorpusLoader(
120
122
  'gutenberg', PlaintextCorpusReader, r'(?!\.).*\.txt', encoding='latin1')
121
- # corpus not available with NLTK; these lines caused help(nltk.corpus) to break
122
- #hebrew_treebank = LazyCorpusLoader(
123
- # 'hebrew_treebank', BracketParseCorpusReader, r'.*\.txt')
124
123
  ieer = LazyCorpusLoader(
125
124
  'ieer', IEERCorpusReader, r'(?!README|\.).*')
126
125
  inaugural = LazyCorpusLoader(
@@ -129,8 +128,7 @@ inaugural = LazyCorpusLoader(
129
128
  indian = LazyCorpusLoader(
130
129
  'indian', IndianCorpusReader, r'(?!\.).*\.pos',
131
130
  tagset='unknown', encoding='utf8')
132
- ipipan = LazyCorpusLoader(
133
- 'ipipan', IPIPANCorpusReader, r'(?!\.).*morph\.xml')
131
+
134
132
  jeita = LazyCorpusLoader(
135
133
  'jeita', ChasenCorpusReader, r'.*\.chasen', encoding='utf-8')
136
134
  knbc = LazyCorpusLoader(
@@ -154,18 +152,11 @@ multext_east = LazyCorpusLoader(
154
152
  'mte_teip5', MTECorpusReader, r'(oana).*\.xml', encoding="utf-8")
155
153
  names = LazyCorpusLoader(
156
154
  'names', WordListCorpusReader, r'(?!\.).*\.txt', encoding='ascii')
157
- nkjp = LazyCorpusLoader(
158
- 'nkjp', NKJPCorpusReader, r'', encoding='utf8')
159
155
  nps_chat = LazyCorpusLoader(
160
156
  'nps_chat', NPSChatCorpusReader, r'(?!README|\.).*\.xml', tagset='wsj')
161
157
  opinion_lexicon = LazyCorpusLoader(
162
158
  'opinion_lexicon', OpinionLexiconCorpusReader, r'(\w+)\-words\.txt',
163
159
  encoding='ISO-8859-2')
164
- panlex_lite = LazyCorpusLoader(
165
- 'panlex_lite', PanLexLiteCorpusReader)
166
- pl196x = LazyCorpusLoader(
167
- 'pl196x', Pl196xCorpusReader, r'[a-z]-.*\.xml',
168
- cat_file='cats.txt', textid_file='textids.txt', encoding='utf8')
169
160
  ppattach = LazyCorpusLoader(
170
161
  'ppattach', PPAttachmentCorpusReader, ['training', 'test', 'devset'])
171
162
  product_reviews_1 = LazyCorpusLoader(
@@ -250,8 +241,7 @@ wordnet_ic = LazyCorpusLoader(
250
241
  'wordnet_ic', WordNetICCorpusReader, '.*\.dat')
251
242
  words = LazyCorpusLoader(
252
243
  'words', WordListCorpusReader, r'(?!README|\.).*', encoding='ascii')
253
- ycoe = LazyCorpusLoader(
254
- 'ycoe', YCOECorpusReader)
244
+
255
245
  # defined after treebank
256
246
  propbank = LazyCorpusLoader(
257
247
  'propbank', PropbankCorpusReader,
@@ -277,6 +267,37 @@ semcor = LazyCorpusLoader(
277
267
  'semcor', SemcorCorpusReader, r'brown./tagfiles/br-.*\.xml',
278
268
  wordnet) # Must be defined *after* wordnet corpus.
279
269
 
270
+ nonbreaking_prefixes = LazyCorpusLoader(
271
+ 'nonbreaking_prefixes', NonbreakingPrefixesCorpusReader, r'(?!README|\.).*', encoding='utf8')
272
+ perluniprops = LazyCorpusLoader(
273
+ 'perluniprops', UnicharsCorpusReader, r'(?!README|\.).*', nltk_data_subdir='misc', encoding='utf8')
274
+
275
+ # mwa_ppdb = LazyCorpusLoader(
276
+ # 'mwa_ppdb', MWAPPDBCorpusReader, r'(?!README|\.).*', nltk_data_subdir='misc', encoding='utf8')
277
+
278
+ # See https://github.com/nltk/nltk/issues/1579
279
+ # and https://github.com/nltk/nltk/issues/1716
280
+ #
281
+ # pl196x = LazyCorpusLoader(
282
+ # 'pl196x', Pl196xCorpusReader, r'[a-z]-.*\.xml',
283
+ # cat_file='cats.txt', textid_file='textids.txt', encoding='utf8')
284
+ #
285
+ # ipipan = LazyCorpusLoader(
286
+ # 'ipipan', IPIPANCorpusReader, r'(?!\.).*morph\.xml')
287
+ #
288
+ # nkjp = LazyCorpusLoader(
289
+ # 'nkjp', NKJPCorpusReader, r'', encoding='utf8')
290
+ #
291
+ #panlex_lite = LazyCorpusLoader(
292
+ # 'panlex_lite', PanLexLiteCorpusReader)
293
+ #
294
+ # ycoe = LazyCorpusLoader(
295
+ # 'ycoe', YCOECorpusReader)
296
+ #
297
+ # corpus not available with NLTK; these lines caused help(nltk.corpus) to break
298
+ #hebrew_treebank = LazyCorpusLoader(
299
+ # 'hebrew_treebank', BracketParseCorpusReader, r'.*\.txt')
300
+
280
301
 
281
302
  def demo():
282
303
  # This is out-of-date:
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Europarl Corpus Readers
2
2
  #
3
- # Copyright (C) 2001-2016 NLTK Project
3
+ # Copyright (C) 2001-2018 NLTK Project
4
4
  # Author: Nitin Madnani <nmadnani@umiacs.umd.edu>
5
5
  # URL: <http://nltk.org/>
6
6
  # For license information, see LICENSE.TXT
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Corpus Readers
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
  # Edward Loper <edloper@gmail.com>
6
6
  # URL: <http://nltk.org/>
@@ -141,5 +141,7 @@ __all__ = [
141
141
  'TwitterCorpusReader', 'NKJPCorpusReader', 'CrubadanCorpusReader',
142
142
  'MTECorpusReader', 'ReviewsCorpusReader', 'OpinionLexiconCorpusReader',
143
143
  'ProsConsCorpusReader', 'CategorizedSentencesCorpusReader',
144
- 'ComparativeSentencesCorpusReader', 'PanLexLiteCorpusReader'
144
+ 'ComparativeSentencesCorpusReader', 'PanLexLiteCorpusReader',
145
+ 'NonbreakingPrefixesCorpusReader', 'UnicharsCorpusReader',
146
+ 'MWAPPDBCorpusReader',
145
147
  ]
@@ -1,11 +1,12 @@
1
1
  # Natural Language Toolkit: Aligned Corpus Reader
2
2
  #
3
- # Copyright (C) 2001-2016 NLTK Project
3
+ # Copyright (C) 2001-2018 NLTK Project
4
4
  # URL: <http://nltk.org/>
5
5
  # Author: Steven Bird <stevenbird1@gmail.com>
6
6
  # For license information, see LICENSE.TXT
7
7
 
8
- from nltk import compat
8
+ from six import string_types
9
+
9
10
  from nltk.tokenize import WhitespaceTokenizer, RegexpTokenizer
10
11
  from nltk.translate import AlignedSent, Alignment
11
12
 
@@ -45,7 +46,7 @@ class AlignedCorpusReader(CorpusReader):
45
46
  :rtype: str
46
47
  """
47
48
  if fileids is None: fileids = self._fileids
48
- elif isinstance(fileids, compat.string_types): fileids = [fileids]
49
+ elif isinstance(fileids, string_types): fileids = [fileids]
49
50
  return concat([self.open(f).read() for f in fileids])
50
51
 
51
52
  def words(self, fileids=None):
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: API for Corpus Readers
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
  # Edward Loper <edloper@gmail.com>
6
6
  # URL: <http://nltk.org/>
@@ -14,6 +14,9 @@ from __future__ import unicode_literals
14
14
  import os
15
15
  import re
16
16
  from collections import defaultdict
17
+ from itertools import chain
18
+
19
+ from six import string_types
17
20
 
18
21
  from nltk import compat
19
22
  from nltk.data import PathPointer, FileSystemPathPointer, ZipFilePathPointer
@@ -72,7 +75,7 @@ class CorpusReader(object):
72
75
  tagged_...() methods.
73
76
  """
74
77
  # Convert the root to a path pointer, if necessary.
75
- if isinstance(root, compat.string_types) and not isinstance(root, PathPointer):
78
+ if isinstance(root, string_types) and not isinstance(root, PathPointer):
76
79
  m = re.match('(.*\.zip)/?(.*)$|', root)
77
80
  zipfile, zipentry = m.groups()
78
81
  if zipfile:
@@ -83,7 +86,7 @@ class CorpusReader(object):
83
86
  raise TypeError('CorpusReader: expected a string or a PathPointer')
84
87
 
85
88
  # If `fileids` is a regexp, then expand it.
86
- if isinstance(fileids, compat.string_types):
89
+ if isinstance(fileids, string_types):
87
90
  fileids = find_corpus_fileids(root, fileids)
88
91
 
89
92
  self._fileids = fileids
@@ -184,7 +187,7 @@ class CorpusReader(object):
184
187
  """
185
188
  if fileids is None:
186
189
  fileids = self._fileids
187
- elif isinstance(fileids, compat.string_types):
190
+ elif isinstance(fileids, string_types):
188
191
  fileids = [fileids]
189
192
 
190
193
  paths = [self._root.join(f) for f in fileids]
@@ -338,7 +341,7 @@ class CategorizedCorpusReader(object):
338
341
  self._init()
339
342
  if fileids is None:
340
343
  return sorted(self._c2f)
341
- if isinstance(fileids, compat.string_types):
344
+ if isinstance(fileids, string_types):
342
345
  fileids = [fileids]
343
346
  return sorted(set.union(*[self._f2c[d] for d in fileids]))
344
347
 
@@ -349,7 +352,7 @@ class CategorizedCorpusReader(object):
349
352
  """
350
353
  if categories is None:
351
354
  return super(CategorizedCorpusReader, self).fileids()
352
- elif isinstance(categories, compat.string_types):
355
+ elif isinstance(categories, string_types):
353
356
  if self._f2c is None:
354
357
  self._init()
355
358
  if categories in self._c2f:
@@ -391,7 +394,7 @@ class SyntaxCorpusReader(CorpusReader):
391
394
 
392
395
  def raw(self, fileids=None):
393
396
  if fileids is None: fileids = self._fileids
394
- elif isinstance(fileids, compat.string_types): fileids = [fileids]
397
+ elif isinstance(fileids, string_types): fileids = [fileids]
395
398
  return concat([self.open(f).read() for f in fileids])
396
399
 
397
400
  def parsed_sents(self, fileids=None):
@@ -426,10 +429,10 @@ class SyntaxCorpusReader(CorpusReader):
426
429
  #{ Block Readers
427
430
 
428
431
  def _read_word_block(self, stream):
429
- return sum(self._read_sent_block(stream), [])
432
+ return list(chain(*self._read_sent_block(stream)))
430
433
 
431
434
  def _read_tagged_word_block(self, stream, tagset=None):
432
- return sum(self._read_tagged_sent_block(stream, tagset), [])
435
+ return list(chain(*self._read_tagged_sent_block(stream, tagset)))
433
436
 
434
437
  def _read_sent_block(self, stream):
435
438
  return list(filter(None, [self._word(t) for t in self._read_block(stream)]))
@@ -443,4 +446,3 @@ class SyntaxCorpusReader(CorpusReader):
443
446
 
444
447
  #} End of Block Readers
445
448
  #------------------------------------------------------------
446
-
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Plaintext Corpus Reader
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
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Penn Treebank 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
  # Edward Loper <edloper@gmail.com>
6
6
  # URL: <http://nltk.org/>
@@ -1,6 +1,6 @@
1
1
  # Natural Language Toolkit: Categorized Sentences Corpus Reader
2
2
  #
3
- # Copyright (C) 2001-2016 NLTK Project
3
+ # Copyright (C) 2001-2018 NLTK Project
4
4
  # Author: Pierpaolo Pantone <24alsecondo@gmail.com>
5
5
  # URL: <http://nltk.org/>
6
6
  # For license information, see LICENSE.TXT
@@ -34,6 +34,7 @@ Related papers:
34
34
  sentiment categorization with respect to rating scales". Proceedings of the
35
35
  ACL, 2005.
36
36
  """
37
+ from six import string_types
37
38
 
38
39
  from nltk.corpus.reader.api import *
39
40
  from nltk.tokenize import *
@@ -133,7 +134,7 @@ class CategorizedSentencesCorpusReader(CategorizedCorpusReader, CorpusReader):
133
134
  fileids = self._resolve(fileids, categories)
134
135
  if fileids is None:
135
136
  fileids = self._fileids
136
- elif isinstance(fileids, compat.string_types):
137
+ elif isinstance(fileids, string_types):
137
138
  fileids = [fileids]
138
139
  return concat([self.CorpusView(path, self._read_sent_block, encoding=enc)
139
140
  for (path, enc, fileid) in self.abspaths(fileids, True, True)])
@@ -153,7 +154,7 @@ class CategorizedSentencesCorpusReader(CategorizedCorpusReader, CorpusReader):
153
154
  fileids = self._resolve(fileids, categories)
154
155
  if fileids is None:
155
156
  fileids = self._fileids
156
- elif isinstance(fileids, compat.string_types):
157
+ elif isinstance(fileids, string_types):
157
158
  fileids = [fileids]
158
159
  return concat([self.CorpusView(path, self._read_word_block, encoding=enc)
159
160
  for (path, enc, fileid) in self.abspaths(fileids, True, True)])