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,178 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Natural Language Toolkit: NIST Score
3
+ #
4
+ # Copyright (C) 2001-2018 NLTK Project
5
+ # Authors:
6
+ # Contributors:
7
+ # URL: <http://nltk.org/>
8
+ # For license information, see LICENSE.TXT
9
+
10
+ """NIST score implementation."""
11
+ from __future__ import division
12
+
13
+ import math
14
+ import fractions
15
+ from collections import Counter
16
+
17
+ from nltk.util import ngrams
18
+
19
+ def sentence_nist(references, hypothesis, n=5):
20
+ """
21
+ Calculate NIST score from
22
+ George Doddington. 2002. "Automatic evaluation of machine translation quality
23
+ using n-gram co-occurrence statistics." Proceedings of HLT.
24
+ Morgan Kaufmann Publishers Inc. http://dl.acm.org/citation.cfm?id=1289189.1289273
25
+
26
+ DARPA commissioned NIST to develop an MT evaluation facility based on the BLEU
27
+ score. The official script used by NIST to compute BLEU and NIST score is
28
+ mteval-14.pl. The main differences are:
29
+
30
+ - BLEU uses geometric mean of the ngram overlaps, NIST uses arithmetic mean.
31
+ - NIST has a different brevity penalty
32
+ - NIST score from mteval-14.pl has a self-contained tokenizer
33
+
34
+ Note: The mteval-14.pl includes a smoothing function for BLEU score that is NOT
35
+ used in the NIST score computation.
36
+
37
+ >>> hypothesis1 = ['It', 'is', 'a', 'guide', 'to', 'action', 'which',
38
+ ... 'ensures', 'that', 'the', 'military', 'always',
39
+ ... 'obeys', 'the', 'commands', 'of', 'the', 'party']
40
+
41
+ >>> hypothesis2 = ['It', 'is', 'to', 'insure', 'the', 'troops',
42
+ ... 'forever', 'hearing', 'the', 'activity', 'guidebook',
43
+ ... 'that', 'party', 'direct']
44
+
45
+ >>> reference1 = ['It', 'is', 'a', 'guide', 'to', 'action', 'that',
46
+ ... 'ensures', 'that', 'the', 'military', 'will', 'forever',
47
+ ... 'heed', 'Party', 'commands']
48
+
49
+ >>> reference2 = ['It', 'is', 'the', 'guiding', 'principle', 'which',
50
+ ... 'guarantees', 'the', 'military', 'forces', 'always',
51
+ ... 'being', 'under', 'the', 'command', 'of', 'the',
52
+ ... 'Party']
53
+
54
+ >>> reference3 = ['It', 'is', 'the', 'practical', 'guide', 'for', 'the',
55
+ ... 'army', 'always', 'to', 'heed', 'the', 'directions',
56
+ ... 'of', 'the', 'party']
57
+
58
+ >>> sentence_nist([reference1, reference2, reference3], hypothesis1) # doctest: +ELLIPSIS
59
+ 3.3709...
60
+
61
+ >>> sentence_nist([reference1, reference2, reference3], hypothesis2) # doctest: +ELLIPSIS
62
+ 1.4619...
63
+
64
+ :param references: reference sentences
65
+ :type references: list(list(str))
66
+ :param hypothesis: a hypothesis sentence
67
+ :type hypothesis: list(str)
68
+ :param n: highest n-gram order
69
+ :type n: int
70
+ """
71
+ return corpus_nist([references], [hypothesis], n)
72
+
73
+ def corpus_nist(list_of_references, hypotheses, n=5):
74
+ """
75
+ Calculate a single corpus-level NIST score (aka. system-level BLEU) for all
76
+ the hypotheses and their respective references.
77
+
78
+ :param references: a corpus of lists of reference sentences, w.r.t. hypotheses
79
+ :type references: list(list(list(str)))
80
+ :param hypotheses: a list of hypothesis sentences
81
+ :type hypotheses: list(list(str))
82
+ :param n: highest n-gram order
83
+ :type n: int
84
+ """
85
+ # Before proceeding to compute NIST, perform sanity checks.
86
+ assert len(list_of_references) == len(hypotheses), "The number of hypotheses and their reference(s) should be the same"
87
+
88
+ # Collect the ngram coounts from the reference sentences.
89
+ ngram_freq = Counter()
90
+ total_reference_words = 0
91
+ for references in list_of_references: # For each source sent, there's a list of reference sents.
92
+ for reference in references:
93
+ # For each order of ngram, count the ngram occurrences.
94
+ for i in range(1,n+1):
95
+ ngram_freq.update(ngrams(reference, i))
96
+ total_reference_words += len(reference)
97
+
98
+ # Compute the information weights based on the reference sentences.
99
+ # Eqn 2 in Doddington (2002):
100
+ # Info(w_1 ... w_n) = log_2 [ (# of occurrences of w_1 ... w_n-1) / (# of occurrences of w_1 ... w_n) ]
101
+ information_weights = {}
102
+ for _ngram in ngram_freq: # w_1 ... w_n
103
+ _mgram = _ngram[:-1] # w_1 ... w_n-1
104
+ # From https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/mteval-v13a.pl#L546
105
+ # it's computed as such:
106
+ # denominator = ngram_freq[_mgram] if _mgram and _mgram in ngram_freq else denominator = total_reference_words
107
+ # information_weights[_ngram] = -1 * math.log(ngram_freq[_ngram]/denominator) / math.log(2)
108
+ #
109
+ # Mathematically, it's equivalent to the our implementation:
110
+ if _mgram and _mgram in ngram_freq:
111
+ numerator = ngram_freq[_mgram]
112
+ else:
113
+ numerator = total_reference_words
114
+ information_weights[_ngram] = math.log(numerator/ngram_freq[_ngram], 2)
115
+
116
+ # Micro-average.
117
+ nist_precision_numerator_per_ngram = Counter()
118
+ nist_precision_denominator_per_ngram = Counter()
119
+ l_ref, l_sys = 0, 0
120
+ # For each order of ngram.
121
+ for i in range(1,n+1):
122
+ # Iterate through each hypothesis and their corresponding references.
123
+ for references, hypothesis in zip(list_of_references, hypotheses):
124
+ hyp_len = len(hypothesis)
125
+
126
+ # Find reference with the best NIST score.
127
+ nist_score_per_ref = []
128
+ for reference in references:
129
+ _ref_len = len(reference)
130
+ # Counter of ngrams in hypothesis.
131
+ hyp_ngrams = Counter(ngrams(hypothesis, i)) if len(hypothesis) >= i else Counter()
132
+ ref_ngrams = Counter(ngrams(reference, i)) if len(reference) >=i else Counter()
133
+ ngram_overlaps = hyp_ngrams & ref_ngrams
134
+ # Precision part of the score in Eqn 3
135
+ _numerator = sum(information_weights[_ngram] * count
136
+ for _ngram, count in ngram_overlaps.items())
137
+ _denominator = sum(hyp_ngrams.values())
138
+ _precision = 0 if _denominator == 0 else _numerator/_denominator
139
+ nist_score_per_ref.append((_precision, _numerator, _denominator, _ref_len))
140
+ # Best reference.
141
+ precision, numerator, denominator, ref_len = max(nist_score_per_ref)
142
+ nist_precision_numerator_per_ngram[i] += numerator
143
+ nist_precision_denominator_per_ngram[i] += denominator
144
+ l_ref += ref_len
145
+ l_sys += hyp_len
146
+
147
+ # Final NIST micro-average mean aggregation.
148
+ nist_precision = 0
149
+ for i in nist_precision_numerator_per_ngram:
150
+ precision = nist_precision_numerator_per_ngram[i] / nist_precision_denominator_per_ngram[i]
151
+ nist_precision+= precision
152
+ # Eqn 3 in Doddington(2002)
153
+ return nist_precision * nist_length_penalty(l_ref, l_sys)
154
+
155
+
156
+ def nist_length_penalty(ref_len, hyp_len):
157
+ """
158
+ Calculates the NIST length penalty, from Eq. 3 in Doddington (2002)
159
+
160
+ penalty = exp( beta * log( min( len(hyp)/len(ref) , 1.0 )))
161
+
162
+ where,
163
+
164
+ `beta` is chosen to make the brevity penalty factor = 0.5 when the
165
+ no. of words in the system output (hyp) is 2/3 of the average
166
+ no. of words in the reference translation (ref)
167
+
168
+ The NIST penalty is different from BLEU's such that it minimize the impact
169
+ of the score of small variations in the length of a translation.
170
+ See Fig. 4 in Doddington (2002)
171
+ """
172
+ ratio = hyp_len / ref_len
173
+ if 0 < ratio < 1:
174
+ ratio_x, score_x = 1.5, 0.5
175
+ beta = math.log(score_x) / math.log(ratio_x)**2
176
+ return math.exp(beta * math.log(ratio)**2)
177
+ else: # ratio <= 0 or ratio >= 1
178
+ return max(min(ratio, 1.0), 0.0)
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Phrase Extraction Algorithm
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Authors: Liling Tan, Fredrik Hedman, Petra Barancikova
6
6
  # URL: <http://nltk.org/>
7
7
  # For license information, see LICENSE.TXT
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: RIBES Score
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Contributors: Katsuhito Sudoh, Liling Tan, Kasramvd, J.F.Sebastian
6
6
  # Mark Byers, ekhumoro, P. Ortiz
7
7
  # URL: <http://nltk.org/>
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Stack decoder
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Tah Wei Hoon <hoon.tw@gmail.com>
6
6
  # URL: <http://nltk.org/>
7
7
  # For license information, see LICENSE.TXT
@@ -493,3 +493,7 @@ class _Stack(object):
493
493
 
494
494
  def __contains__(self, hypothesis):
495
495
  return hypothesis in self.items
496
+
497
+ def __bool__(self):
498
+ return len(self.items) != 0
499
+ __nonzero__=__bool__
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Text Trees
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Edward Loper <edloper@gmail.com>
6
6
  # Steven Bird <stevenbird1@gmail.com>
7
7
  # Peter Ljunglöf <peter.ljunglof@gu.se>
@@ -14,15 +14,19 @@ Class for representing hierarchical language structures, such as
14
14
  syntax trees and morphological trees.
15
15
  """
16
16
  from __future__ import print_function, unicode_literals
17
+ from abc import ABCMeta, abstractmethod
18
+ from six import add_metaclass
17
19
 
18
20
  # TODO: add LabelledTree (can be used for dependency trees)
19
21
 
20
22
  import re
21
23
 
24
+ from six import string_types
25
+
22
26
  from nltk.grammar import Production, Nonterminal
23
27
  from nltk.probability import ProbabilisticMixIn
24
28
  from nltk.util import slice_bounds
25
- from nltk.compat import string_types, python_2_unicode_compatible, unicode_repr
29
+ from nltk.compat import python_2_unicode_compatible, unicode_repr
26
30
  from nltk.internals import raise_unorderable_types
27
31
 
28
32
  ######################################################################
@@ -694,7 +698,7 @@ class Tree(list):
694
698
  from nltk.treeprettyprinter import TreePrettyPrinter
695
699
  print(TreePrettyPrinter(self, sentence, highlight).text(**kwargs),
696
700
  file=stream)
697
-
701
+
698
702
  def __repr__(self):
699
703
  childstr = ", ".join(unicode_repr(c) for c in self)
700
704
  return '%s(%s, [%s])' % (type(self).__name__, unicode_repr(self._label), childstr)
@@ -877,7 +881,7 @@ class ImmutableTree(Tree):
877
881
  ######################################################################
878
882
  ## Parented trees
879
883
  ######################################################################
880
-
884
+ @add_metaclass(ABCMeta)
881
885
  class AbstractParentedTree(Tree):
882
886
  """
883
887
  An abstract base class for a ``Tree`` that automatically maintains
@@ -921,7 +925,7 @@ class AbstractParentedTree(Tree):
921
925
  #////////////////////////////////////////////////////////////
922
926
  # Parent management
923
927
  #////////////////////////////////////////////////////////////
924
-
928
+ @abstractmethod
925
929
  def _setparent(self, child, index, dry_run=False):
926
930
  """
927
931
  Update the parent pointer of ``child`` to point to ``self``. This
@@ -942,8 +946,8 @@ class AbstractParentedTree(Tree):
942
946
  parent pointer; just check for any error conditions, and
943
947
  raise an exception if one is found.
944
948
  """
945
- raise NotImplementedError()
946
949
 
950
+ @abstractmethod
947
951
  def _delparent(self, child, index):
948
952
  """
949
953
  Update the parent pointer of ``child`` to not point to self. This
@@ -956,7 +960,6 @@ class AbstractParentedTree(Tree):
956
960
  :type index: int
957
961
  :param index: The index of ``child`` in ``self``.
958
962
  """
959
- raise NotImplementedError()
960
963
 
961
964
  #////////////////////////////////////////////////////////////
962
965
  # Methods that add/remove children
@@ -1600,4 +1603,3 @@ __all__ = ['ImmutableProbabilisticTree', 'ImmutableTree', 'ProbabilisticMixIn',
1600
1603
  'ProbabilisticTree', 'Tree', 'bracket_parse',
1601
1604
  'sinica_parse', 'ParentedTree', 'MultiParentedTree',
1602
1605
  'ImmutableParentedTree', 'ImmutableMultiParentedTree']
1603
-
@@ -1,14 +1,14 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: ASCII visualization of NLTK trees
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Andreas van Cranenburgh <A.W.vanCranenburgh@uva.nl>
6
6
  # Peter Ljunglöf <peter.ljunglof@gu.se>
7
7
  # URL: <http://nltk.org/>
8
8
  # For license information, see LICENSE.TXT
9
9
 
10
10
  """
11
- Pretty-printing of discontinuous trees.
11
+ Pretty-printing of discontinuous trees.
12
12
  Adapted from the disco-dop project, by Andreas van Cranenburgh.
13
13
  https://github.com/andreasvc/disco-dop
14
14
 
@@ -21,7 +21,7 @@ http://jgaa.info/accepted/2006/EschbachGuentherBecker2006.10.2.pdf
21
21
  from __future__ import division, print_function, unicode_literals
22
22
 
23
23
  from nltk.util import slice_bounds, OrderedDict
24
- from nltk.compat import string_types, python_2_unicode_compatible, unicode_repr
24
+ from nltk.compat import python_2_unicode_compatible, unicode_repr
25
25
  from nltk.internals import raise_unorderable_types
26
26
  from nltk.tree import Tree
27
27
 
@@ -56,8 +56,8 @@ class TreePrettyPrinter(object):
56
56
  creates an object from which different visualizations can be created.
57
57
 
58
58
  :param tree: a Tree object.
59
- :param sentence: a list of words (strings). If `sentence` is given,
60
- `tree` must contain integers as leaves, which are taken as indices
59
+ :param sentence: a list of words (strings). If `sentence` is given,
60
+ `tree` must contain integers as leaves, which are taken as indices
61
61
  in `sentence`. Using this you can display a discontinuous tree.
62
62
  :param highlight: Optionally, a sequence of Tree objects in `tree` which
63
63
  should be highlighted. Has the effect of only applying colors to nodes
@@ -521,7 +521,7 @@ class TreePrettyPrinter(object):
521
521
  result += ['\t<text style="text-anchor: middle; fill: %s; '
522
522
  'font-size: %dpx;" x="%g" y="%g">%s</text>' % (
523
523
  color, fontsize, x, y,
524
- escape(node.label() if isinstance(node, Tree)
524
+ escape(node.label() if isinstance(node, Tree)
525
525
  else node))]
526
526
 
527
527
  result += ['</svg>']
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Twitter
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Ewan Klein <ewan@inf.ed.ac.uk>
6
6
  # URL: <http://nltk.org/>
7
7
  # For license information, see LICENSE.TXT
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Twitter API
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Ewan Klein <ewan@inf.ed.ac.uk>
6
6
  # Lorenzo Rubio <lrnzcig@gmail.com>
7
7
  # URL: <http://nltk.org/>
@@ -12,6 +12,8 @@ This module provides an interface for TweetHandlers, and support for timezone
12
12
  handling.
13
13
  """
14
14
 
15
+ from abc import ABCMeta, abstractmethod
16
+ from six import add_metaclass
15
17
  from datetime import tzinfo, timedelta, datetime
16
18
  from nltk.compat import UTC
17
19
  import time as _time
@@ -42,8 +44,11 @@ class LocalTimezoneOffsetWithUTC(tzinfo):
42
44
  """
43
45
  return self.DSTOFFSET
44
46
 
47
+
45
48
  LOCAL = LocalTimezoneOffsetWithUTC()
46
49
 
50
+
51
+ @add_metaclass(ABCMeta)
47
52
  class BasicTweetHandler(object):
48
53
  """
49
54
  Minimal implementation of `TweetHandler`.
@@ -101,17 +106,17 @@ class TweetHandlerI(BasicTweetHandler):
101
106
 
102
107
  self.startingup = True
103
108
 
109
+ @abstractmethod
104
110
  def handle(self, data):
105
111
  """
106
112
  Deal appropriately with data returned by the Twitter API
107
113
  """
108
- raise NotImplementedError
109
114
 
115
+ @abstractmethod
110
116
  def on_finish(self):
111
117
  """
112
118
  Actions when the tweet limit has been reached
113
119
  """
114
- raise NotImplementedError
115
120
 
116
121
  def check_date_limit(self, data, verbose=False):
117
122
  """
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Twitter client
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Ewan Klein <ewan@inf.ed.ac.uk>
6
6
  # Lorenzo Rubio <lrnzcig@gmail.com>
7
7
  # URL: <http://nltk.org/>
@@ -19,9 +19,9 @@ import json
19
19
 
20
20
  import nltk.compat as compat
21
21
 
22
-
23
22
  HIER_SEPARATOR = "."
24
23
 
24
+
25
25
  def extract_fields(tweet, fields):
26
26
  """
27
27
  Extract field values from a full tweet and return them as a list
@@ -38,6 +38,7 @@ def extract_fields(tweet, fields):
38
38
  raise RuntimeError('Fatal error when extracting fields. Cannot find field ', field)
39
39
  return out
40
40
 
41
+
41
42
  def _add_field_to_out(json, field, out):
42
43
  if _is_composed_key(field):
43
44
  key, value = _get_key_value_composed(field)
@@ -45,11 +46,13 @@ def _add_field_to_out(json, field, out):
45
46
  else:
46
47
  out += [json[field]]
47
48
 
49
+
48
50
  def _is_composed_key(field):
49
51
  if HIER_SEPARATOR in field:
50
52
  return True
51
53
  return False
52
54
 
55
+
53
56
  def _get_key_value_composed(field):
54
57
  out = field.split(HIER_SEPARATOR)
55
58
  # there could be up to 3 levels
@@ -57,6 +60,7 @@ def _get_key_value_composed(field):
57
60
  value = HIER_SEPARATOR.join(out[1:])
58
61
  return key, value
59
62
 
63
+
60
64
  def _get_entity_recursive(json, entity):
61
65
  if not json:
62
66
  return None
@@ -82,6 +86,7 @@ def _get_entity_recursive(json, entity):
82
86
  else:
83
87
  return None
84
88
 
89
+
85
90
  def json2csv(fp, outfile, fields, encoding='utf8', errors='replace',
86
91
  gzip_compress=False):
87
92
  """
@@ -207,6 +212,7 @@ def json2csv_entities(tweets_file, outfile, main_fields, entity_type, entity_fie
207
212
  _write_to_file(tweet_fields, items, entity_fields, writer)
208
213
  outf.close()
209
214
 
215
+
210
216
  def get_header_field_list(main_fields, entity_type, entity_fields):
211
217
  if _is_composed_key(entity_type):
212
218
  key, value = _get_key_value_composed(entity_type)
@@ -223,6 +229,7 @@ def get_header_field_list(main_fields, entity_type, entity_fields):
223
229
  output2 = [HIER_SEPARATOR.join([sub_entity, x]) for x in entity_fields]
224
230
  return output1 + output2
225
231
 
232
+
226
233
  def _write_to_file(object_fields, items, entity_fields, writer):
227
234
  if not items:
228
235
  # it could be that the entity is just not present for the tweet
@@ -255,4 +262,3 @@ def _write_to_file(object_fields, items, entity_fields, writer):
255
262
  for item in items:
256
263
  row = object_fields + extract_fields(item, entity_fields)
257
264
  writer.writerow(row)
258
-
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Twitter client
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Ewan Klein <ewan@inf.ed.ac.uk>
6
6
  # Lorenzo Rubio <lrnzcig@gmail.com>
7
7
  # URL: <http://nltk.org/>
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Twitter client
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Ewan Klein <ewan@inf.ed.ac.uk>
6
6
  # Lorenzo Rubio <lrnzcig@gmail.com>
7
7
  # URL: <http://nltk.org/>
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Natural Language Toolkit: Twitter client
3
3
  #
4
- # Copyright (C) 2001-2016 NLTK Project
4
+ # Copyright (C) 2001-2018 NLTK Project
5
5
  # Author: Ewan Klein <ewan@inf.ed.ac.uk>
6
6
  # Lorenzo Rubio <lrnzcig@gmail.com>
7
7
  # URL: <http://nltk.org/>
@@ -17,6 +17,7 @@ import os
17
17
  import pprint
18
18
  from twython import Twython
19
19
 
20
+
20
21
  def credsfromfile(creds_file=None, subdir=None, verbose=False):
21
22
  """
22
23
  Convenience function for authentication
@@ -28,6 +29,7 @@ class Authenticate(object):
28
29
  """
29
30
  Methods for authenticating with Twitter.
30
31
  """
32
+
31
33
  def __init__(self):
32
34
  self.creds_file = 'credentials.txt'
33
35
  self.creds_fullpath = None
@@ -40,7 +42,6 @@ class Authenticate(object):
40
42
  self.twitter_dir = None
41
43
  self.creds_subdir = None
42
44
 
43
-
44
45
  def load_creds(self, creds_file=None, subdir=None, verbose=False):
45
46
  """
46
47
  Read OAuth credentials from a text file.
@@ -70,13 +71,13 @@ class Authenticate(object):
70
71
 
71
72
  if subdir is None:
72
73
  if self.creds_subdir is None:
73
- msg = "Supply a value to the 'subdir' parameter or" +\
74
+ msg = "Supply a value to the 'subdir' parameter or" + \
74
75
  " set the TWITTER environment variable."
75
76
  raise ValueError(msg)
76
77
  else:
77
78
  self.creds_subdir = subdir
78
79
 
79
- self.creds_fullpath =\
80
+ self.creds_fullpath = \
80
81
  os.path.normpath(os.path.join(self.creds_subdir, self.creds_file))
81
82
 
82
83
  if not os.path.isfile(self.creds_fullpath):