grammar_cop 0.1.0

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 (344) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +4 -0
  3. data/Gemfile +4 -0
  4. data/Rakefile +8 -0
  5. data/data/.DS_Store +0 -0
  6. data/data/Makefile +511 -0
  7. data/data/Makefile.am +4 -0
  8. data/data/Makefile.in +511 -0
  9. data/data/de/.DS_Store +0 -0
  10. data/data/de/4.0.affix +7 -0
  11. data/data/de/4.0.dict +474 -0
  12. data/data/de/Makefile +387 -0
  13. data/data/de/Makefile.am +9 -0
  14. data/data/de/Makefile.in +387 -0
  15. data/data/en/.DS_Store +0 -0
  16. data/data/en/4.0.affix +26 -0
  17. data/data/en/4.0.batch +1002 -0
  18. data/data/en/4.0.biolg.batch +411 -0
  19. data/data/en/4.0.constituent-knowledge +127 -0
  20. data/data/en/4.0.dict +8759 -0
  21. data/data/en/4.0.dict.m4 +6928 -0
  22. data/data/en/4.0.enwiki.batch +14 -0
  23. data/data/en/4.0.fixes.batch +2776 -0
  24. data/data/en/4.0.knowledge +306 -0
  25. data/data/en/4.0.regex +225 -0
  26. data/data/en/4.0.voa.batch +114 -0
  27. data/data/en/Makefile +554 -0
  28. data/data/en/Makefile.am +19 -0
  29. data/data/en/Makefile.in +554 -0
  30. data/data/en/README +173 -0
  31. data/data/en/tiny.dict +157 -0
  32. data/data/en/words/.DS_Store +0 -0
  33. data/data/en/words/Makefile +456 -0
  34. data/data/en/words/Makefile.am +78 -0
  35. data/data/en/words/Makefile.in +456 -0
  36. data/data/en/words/currency +205 -0
  37. data/data/en/words/currency.p +28 -0
  38. data/data/en/words/entities.given-bisex.sing +39 -0
  39. data/data/en/words/entities.given-female.sing +4141 -0
  40. data/data/en/words/entities.given-male.sing +1633 -0
  41. data/data/en/words/entities.locations.sing +68 -0
  42. data/data/en/words/entities.national.sing +253 -0
  43. data/data/en/words/entities.organizations.sing +7 -0
  44. data/data/en/words/entities.us-states.sing +11 -0
  45. data/data/en/words/units.1 +45 -0
  46. data/data/en/words/units.1.dot +4 -0
  47. data/data/en/words/units.3 +2 -0
  48. data/data/en/words/units.4 +5 -0
  49. data/data/en/words/units.4.dot +1 -0
  50. data/data/en/words/words-medical.adv.1 +1191 -0
  51. data/data/en/words/words-medical.prep.1 +67 -0
  52. data/data/en/words/words-medical.v.4.1 +2835 -0
  53. data/data/en/words/words-medical.v.4.2 +2848 -0
  54. data/data/en/words/words-medical.v.4.3 +3011 -0
  55. data/data/en/words/words-medical.v.4.4 +3036 -0
  56. data/data/en/words/words-medical.v.4.5 +3050 -0
  57. data/data/en/words/words.adj.1 +6794 -0
  58. data/data/en/words/words.adj.2 +638 -0
  59. data/data/en/words/words.adj.3 +667 -0
  60. data/data/en/words/words.adv.1 +1573 -0
  61. data/data/en/words/words.adv.2 +67 -0
  62. data/data/en/words/words.adv.3 +157 -0
  63. data/data/en/words/words.adv.4 +80 -0
  64. data/data/en/words/words.n.1 +11464 -0
  65. data/data/en/words/words.n.1.wiki +264 -0
  66. data/data/en/words/words.n.2.s +2017 -0
  67. data/data/en/words/words.n.2.s.biolg +1 -0
  68. data/data/en/words/words.n.2.s.wiki +298 -0
  69. data/data/en/words/words.n.2.x +65 -0
  70. data/data/en/words/words.n.2.x.wiki +10 -0
  71. data/data/en/words/words.n.3 +5717 -0
  72. data/data/en/words/words.n.t +23 -0
  73. data/data/en/words/words.v.1.1 +1038 -0
  74. data/data/en/words/words.v.1.2 +1043 -0
  75. data/data/en/words/words.v.1.3 +1052 -0
  76. data/data/en/words/words.v.1.4 +1023 -0
  77. data/data/en/words/words.v.1.p +17 -0
  78. data/data/en/words/words.v.10.1 +14 -0
  79. data/data/en/words/words.v.10.2 +15 -0
  80. data/data/en/words/words.v.10.3 +88 -0
  81. data/data/en/words/words.v.10.4 +17 -0
  82. data/data/en/words/words.v.2.1 +1253 -0
  83. data/data/en/words/words.v.2.2 +1304 -0
  84. data/data/en/words/words.v.2.3 +1280 -0
  85. data/data/en/words/words.v.2.4 +1285 -0
  86. data/data/en/words/words.v.2.5 +1287 -0
  87. data/data/en/words/words.v.4.1 +2472 -0
  88. data/data/en/words/words.v.4.2 +2487 -0
  89. data/data/en/words/words.v.4.3 +2441 -0
  90. data/data/en/words/words.v.4.4 +2478 -0
  91. data/data/en/words/words.v.4.5 +2483 -0
  92. data/data/en/words/words.v.5.1 +98 -0
  93. data/data/en/words/words.v.5.2 +98 -0
  94. data/data/en/words/words.v.5.3 +103 -0
  95. data/data/en/words/words.v.5.4 +102 -0
  96. data/data/en/words/words.v.6.1 +388 -0
  97. data/data/en/words/words.v.6.2 +401 -0
  98. data/data/en/words/words.v.6.3 +397 -0
  99. data/data/en/words/words.v.6.4 +405 -0
  100. data/data/en/words/words.v.6.5 +401 -0
  101. data/data/en/words/words.v.8.1 +117 -0
  102. data/data/en/words/words.v.8.2 +118 -0
  103. data/data/en/words/words.v.8.3 +118 -0
  104. data/data/en/words/words.v.8.4 +119 -0
  105. data/data/en/words/words.v.8.5 +119 -0
  106. data/data/en/words/words.y +104 -0
  107. data/data/lt/.DS_Store +0 -0
  108. data/data/lt/4.0.affix +6 -0
  109. data/data/lt/4.0.constituent-knowledge +24 -0
  110. data/data/lt/4.0.dict +135 -0
  111. data/data/lt/4.0.knowledge +38 -0
  112. data/data/lt/Makefile +389 -0
  113. data/data/lt/Makefile.am +11 -0
  114. data/data/lt/Makefile.in +389 -0
  115. data/ext/.DS_Store +0 -0
  116. data/ext/link_grammar/.DS_Store +0 -0
  117. data/ext/link_grammar/extconf.rb +2 -0
  118. data/ext/link_grammar/link-grammar/.DS_Store +0 -0
  119. data/ext/link_grammar/link-grammar/.deps/analyze-linkage.Plo +198 -0
  120. data/ext/link_grammar/link-grammar/.deps/and.Plo +202 -0
  121. data/ext/link_grammar/link-grammar/.deps/api.Plo +244 -0
  122. data/ext/link_grammar/link-grammar/.deps/build-disjuncts.Plo +212 -0
  123. data/ext/link_grammar/link-grammar/.deps/command-line.Plo +201 -0
  124. data/ext/link_grammar/link-grammar/.deps/constituents.Plo +201 -0
  125. data/ext/link_grammar/link-grammar/.deps/count.Plo +202 -0
  126. data/ext/link_grammar/link-grammar/.deps/disjunct-utils.Plo +126 -0
  127. data/ext/link_grammar/link-grammar/.deps/disjuncts.Plo +123 -0
  128. data/ext/link_grammar/link-grammar/.deps/error.Plo +121 -0
  129. data/ext/link_grammar/link-grammar/.deps/expand.Plo +133 -0
  130. data/ext/link_grammar/link-grammar/.deps/extract-links.Plo +198 -0
  131. data/ext/link_grammar/link-grammar/.deps/fast-match.Plo +200 -0
  132. data/ext/link_grammar/link-grammar/.deps/idiom.Plo +200 -0
  133. data/ext/link_grammar/link-grammar/.deps/jni-client.Plo +217 -0
  134. data/ext/link_grammar/link-grammar/.deps/link-parser.Po +1 -0
  135. data/ext/link_grammar/link-grammar/.deps/massage.Plo +202 -0
  136. data/ext/link_grammar/link-grammar/.deps/post-process.Plo +202 -0
  137. data/ext/link_grammar/link-grammar/.deps/pp_knowledge.Plo +202 -0
  138. data/ext/link_grammar/link-grammar/.deps/pp_lexer.Plo +201 -0
  139. data/ext/link_grammar/link-grammar/.deps/pp_linkset.Plo +200 -0
  140. data/ext/link_grammar/link-grammar/.deps/prefix.Plo +102 -0
  141. data/ext/link_grammar/link-grammar/.deps/preparation.Plo +202 -0
  142. data/ext/link_grammar/link-grammar/.deps/print-util.Plo +200 -0
  143. data/ext/link_grammar/link-grammar/.deps/print.Plo +201 -0
  144. data/ext/link_grammar/link-grammar/.deps/prune.Plo +202 -0
  145. data/ext/link_grammar/link-grammar/.deps/read-dict.Plo +223 -0
  146. data/ext/link_grammar/link-grammar/.deps/read-regex.Plo +123 -0
  147. data/ext/link_grammar/link-grammar/.deps/regex-morph.Plo +131 -0
  148. data/ext/link_grammar/link-grammar/.deps/resources.Plo +203 -0
  149. data/ext/link_grammar/link-grammar/.deps/spellcheck-aspell.Plo +1 -0
  150. data/ext/link_grammar/link-grammar/.deps/spellcheck-hun.Plo +115 -0
  151. data/ext/link_grammar/link-grammar/.deps/string-set.Plo +198 -0
  152. data/ext/link_grammar/link-grammar/.deps/tokenize.Plo +160 -0
  153. data/ext/link_grammar/link-grammar/.deps/utilities.Plo +222 -0
  154. data/ext/link_grammar/link-grammar/.deps/word-file.Plo +201 -0
  155. data/ext/link_grammar/link-grammar/.deps/word-utils.Plo +212 -0
  156. data/ext/link_grammar/link-grammar/.libs/analyze-linkage.o +0 -0
  157. data/ext/link_grammar/link-grammar/.libs/and.o +0 -0
  158. data/ext/link_grammar/link-grammar/.libs/api.o +0 -0
  159. data/ext/link_grammar/link-grammar/.libs/build-disjuncts.o +0 -0
  160. data/ext/link_grammar/link-grammar/.libs/command-line.o +0 -0
  161. data/ext/link_grammar/link-grammar/.libs/constituents.o +0 -0
  162. data/ext/link_grammar/link-grammar/.libs/count.o +0 -0
  163. data/ext/link_grammar/link-grammar/.libs/disjunct-utils.o +0 -0
  164. data/ext/link_grammar/link-grammar/.libs/disjuncts.o +0 -0
  165. data/ext/link_grammar/link-grammar/.libs/error.o +0 -0
  166. data/ext/link_grammar/link-grammar/.libs/expand.o +0 -0
  167. data/ext/link_grammar/link-grammar/.libs/extract-links.o +0 -0
  168. data/ext/link_grammar/link-grammar/.libs/fast-match.o +0 -0
  169. data/ext/link_grammar/link-grammar/.libs/idiom.o +0 -0
  170. data/ext/link_grammar/link-grammar/.libs/jni-client.o +0 -0
  171. data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java-symbols.expsym +31 -0
  172. data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.4.dylib +0 -0
  173. data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.4.dylib.dSYM/Contents/Info.plist +20 -0
  174. data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.4.dylib.dSYM/Contents/Resources/DWARF/liblink-grammar-java.4.dylib +0 -0
  175. data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.a +0 -0
  176. data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.dylib +0 -0
  177. data/ext/link_grammar/link-grammar/.libs/liblink-grammar-symbols.expsym +194 -0
  178. data/ext/link_grammar/link-grammar/.libs/liblink-grammar.4.dylib +0 -0
  179. data/ext/link_grammar/link-grammar/.libs/liblink-grammar.4.dylib.dSYM/Contents/Info.plist +20 -0
  180. data/ext/link_grammar/link-grammar/.libs/liblink-grammar.4.dylib.dSYM/Contents/Resources/DWARF/liblink-grammar.4.dylib +0 -0
  181. data/ext/link_grammar/link-grammar/.libs/liblink-grammar.a +0 -0
  182. data/ext/link_grammar/link-grammar/.libs/liblink-grammar.dylib +0 -0
  183. data/ext/link_grammar/link-grammar/.libs/liblink-grammar.la +41 -0
  184. data/ext/link_grammar/link-grammar/.libs/liblink-grammar.lai +41 -0
  185. data/ext/link_grammar/link-grammar/.libs/massage.o +0 -0
  186. data/ext/link_grammar/link-grammar/.libs/post-process.o +0 -0
  187. data/ext/link_grammar/link-grammar/.libs/pp_knowledge.o +0 -0
  188. data/ext/link_grammar/link-grammar/.libs/pp_lexer.o +0 -0
  189. data/ext/link_grammar/link-grammar/.libs/pp_linkset.o +0 -0
  190. data/ext/link_grammar/link-grammar/.libs/prefix.o +0 -0
  191. data/ext/link_grammar/link-grammar/.libs/preparation.o +0 -0
  192. data/ext/link_grammar/link-grammar/.libs/print-util.o +0 -0
  193. data/ext/link_grammar/link-grammar/.libs/print.o +0 -0
  194. data/ext/link_grammar/link-grammar/.libs/prune.o +0 -0
  195. data/ext/link_grammar/link-grammar/.libs/read-dict.o +0 -0
  196. data/ext/link_grammar/link-grammar/.libs/read-regex.o +0 -0
  197. data/ext/link_grammar/link-grammar/.libs/regex-morph.o +0 -0
  198. data/ext/link_grammar/link-grammar/.libs/resources.o +0 -0
  199. data/ext/link_grammar/link-grammar/.libs/spellcheck-aspell.o +0 -0
  200. data/ext/link_grammar/link-grammar/.libs/spellcheck-hun.o +0 -0
  201. data/ext/link_grammar/link-grammar/.libs/string-set.o +0 -0
  202. data/ext/link_grammar/link-grammar/.libs/tokenize.o +0 -0
  203. data/ext/link_grammar/link-grammar/.libs/utilities.o +0 -0
  204. data/ext/link_grammar/link-grammar/.libs/word-file.o +0 -0
  205. data/ext/link_grammar/link-grammar/.libs/word-utils.o +0 -0
  206. data/ext/link_grammar/link-grammar/Makefile +900 -0
  207. data/ext/link_grammar/link-grammar/Makefile.am +202 -0
  208. data/ext/link_grammar/link-grammar/Makefile.in +900 -0
  209. data/ext/link_grammar/link-grammar/analyze-linkage.c +1317 -0
  210. data/ext/link_grammar/link-grammar/analyze-linkage.h +24 -0
  211. data/ext/link_grammar/link-grammar/and.c +1603 -0
  212. data/ext/link_grammar/link-grammar/and.h +27 -0
  213. data/ext/link_grammar/link-grammar/api-structures.h +362 -0
  214. data/ext/link_grammar/link-grammar/api-types.h +72 -0
  215. data/ext/link_grammar/link-grammar/api.c +1887 -0
  216. data/ext/link_grammar/link-grammar/api.h +96 -0
  217. data/ext/link_grammar/link-grammar/autoit/.DS_Store +0 -0
  218. data/ext/link_grammar/link-grammar/autoit/README +10 -0
  219. data/ext/link_grammar/link-grammar/autoit/_LGTest.au3 +22 -0
  220. data/ext/link_grammar/link-grammar/autoit/_LinkGrammar.au3 +545 -0
  221. data/ext/link_grammar/link-grammar/build-disjuncts.c +487 -0
  222. data/ext/link_grammar/link-grammar/build-disjuncts.h +21 -0
  223. data/ext/link_grammar/link-grammar/command-line.c +458 -0
  224. data/ext/link_grammar/link-grammar/command-line.h +15 -0
  225. data/ext/link_grammar/link-grammar/constituents.c +1836 -0
  226. data/ext/link_grammar/link-grammar/constituents.h +26 -0
  227. data/ext/link_grammar/link-grammar/corpus/.DS_Store +0 -0
  228. data/ext/link_grammar/link-grammar/corpus/.deps/cluster.Plo +1 -0
  229. data/ext/link_grammar/link-grammar/corpus/.deps/corpus.Plo +1 -0
  230. data/ext/link_grammar/link-grammar/corpus/Makefile +527 -0
  231. data/ext/link_grammar/link-grammar/corpus/Makefile.am +46 -0
  232. data/ext/link_grammar/link-grammar/corpus/Makefile.in +527 -0
  233. data/ext/link_grammar/link-grammar/corpus/README +17 -0
  234. data/ext/link_grammar/link-grammar/corpus/cluster.c +286 -0
  235. data/ext/link_grammar/link-grammar/corpus/cluster.h +32 -0
  236. data/ext/link_grammar/link-grammar/corpus/corpus.c +483 -0
  237. data/ext/link_grammar/link-grammar/corpus/corpus.h +46 -0
  238. data/ext/link_grammar/link-grammar/count.c +828 -0
  239. data/ext/link_grammar/link-grammar/count.h +25 -0
  240. data/ext/link_grammar/link-grammar/disjunct-utils.c +261 -0
  241. data/ext/link_grammar/link-grammar/disjunct-utils.h +27 -0
  242. data/ext/link_grammar/link-grammar/disjuncts.c +138 -0
  243. data/ext/link_grammar/link-grammar/disjuncts.h +13 -0
  244. data/ext/link_grammar/link-grammar/error.c +92 -0
  245. data/ext/link_grammar/link-grammar/error.h +35 -0
  246. data/ext/link_grammar/link-grammar/expand.c +67 -0
  247. data/ext/link_grammar/link-grammar/expand.h +13 -0
  248. data/ext/link_grammar/link-grammar/externs.h +22 -0
  249. data/ext/link_grammar/link-grammar/extract-links.c +625 -0
  250. data/ext/link_grammar/link-grammar/extract-links.h +16 -0
  251. data/ext/link_grammar/link-grammar/fast-match.c +309 -0
  252. data/ext/link_grammar/link-grammar/fast-match.h +17 -0
  253. data/ext/link_grammar/link-grammar/idiom.c +373 -0
  254. data/ext/link_grammar/link-grammar/idiom.h +15 -0
  255. data/ext/link_grammar/link-grammar/jni-client.c +779 -0
  256. data/ext/link_grammar/link-grammar/jni-client.h +236 -0
  257. data/ext/link_grammar/link-grammar/liblink-grammar-java.la +42 -0
  258. data/ext/link_grammar/link-grammar/liblink-grammar.la +41 -0
  259. data/ext/link_grammar/link-grammar/link-features.h +37 -0
  260. data/ext/link_grammar/link-grammar/link-features.h.in +37 -0
  261. data/ext/link_grammar/link-grammar/link-grammar-java.def +31 -0
  262. data/ext/link_grammar/link-grammar/link-grammar.def +194 -0
  263. data/ext/link_grammar/link-grammar/link-includes.h +465 -0
  264. data/ext/link_grammar/link-grammar/link-parser.c +849 -0
  265. data/ext/link_grammar/link-grammar/massage.c +329 -0
  266. data/ext/link_grammar/link-grammar/massage.h +13 -0
  267. data/ext/link_grammar/link-grammar/post-process.c +1113 -0
  268. data/ext/link_grammar/link-grammar/post-process.h +45 -0
  269. data/ext/link_grammar/link-grammar/pp_knowledge.c +376 -0
  270. data/ext/link_grammar/link-grammar/pp_knowledge.h +14 -0
  271. data/ext/link_grammar/link-grammar/pp_lexer.c +1920 -0
  272. data/ext/link_grammar/link-grammar/pp_lexer.h +19 -0
  273. data/ext/link_grammar/link-grammar/pp_linkset.c +158 -0
  274. data/ext/link_grammar/link-grammar/pp_linkset.h +20 -0
  275. data/ext/link_grammar/link-grammar/prefix.c +482 -0
  276. data/ext/link_grammar/link-grammar/prefix.h +139 -0
  277. data/ext/link_grammar/link-grammar/preparation.c +412 -0
  278. data/ext/link_grammar/link-grammar/preparation.h +20 -0
  279. data/ext/link_grammar/link-grammar/print-util.c +87 -0
  280. data/ext/link_grammar/link-grammar/print-util.h +32 -0
  281. data/ext/link_grammar/link-grammar/print.c +1085 -0
  282. data/ext/link_grammar/link-grammar/print.h +16 -0
  283. data/ext/link_grammar/link-grammar/prune.c +1864 -0
  284. data/ext/link_grammar/link-grammar/prune.h +17 -0
  285. data/ext/link_grammar/link-grammar/read-dict.c +1785 -0
  286. data/ext/link_grammar/link-grammar/read-dict.h +29 -0
  287. data/ext/link_grammar/link-grammar/read-regex.c +161 -0
  288. data/ext/link_grammar/link-grammar/read-regex.h +12 -0
  289. data/ext/link_grammar/link-grammar/regex-morph.c +126 -0
  290. data/ext/link_grammar/link-grammar/regex-morph.h +17 -0
  291. data/ext/link_grammar/link-grammar/resources.c +180 -0
  292. data/ext/link_grammar/link-grammar/resources.h +23 -0
  293. data/ext/link_grammar/link-grammar/sat-solver/.DS_Store +0 -0
  294. data/ext/link_grammar/link-grammar/sat-solver/.deps/fast-sprintf.Plo +1 -0
  295. data/ext/link_grammar/link-grammar/sat-solver/.deps/sat-encoder.Plo +1 -0
  296. data/ext/link_grammar/link-grammar/sat-solver/.deps/util.Plo +1 -0
  297. data/ext/link_grammar/link-grammar/sat-solver/.deps/variables.Plo +1 -0
  298. data/ext/link_grammar/link-grammar/sat-solver/.deps/word-tag.Plo +1 -0
  299. data/ext/link_grammar/link-grammar/sat-solver/Makefile +527 -0
  300. data/ext/link_grammar/link-grammar/sat-solver/Makefile.am +29 -0
  301. data/ext/link_grammar/link-grammar/sat-solver/Makefile.in +527 -0
  302. data/ext/link_grammar/link-grammar/sat-solver/clock.hpp +33 -0
  303. data/ext/link_grammar/link-grammar/sat-solver/fast-sprintf.cpp +26 -0
  304. data/ext/link_grammar/link-grammar/sat-solver/fast-sprintf.hpp +7 -0
  305. data/ext/link_grammar/link-grammar/sat-solver/guiding.hpp +244 -0
  306. data/ext/link_grammar/link-grammar/sat-solver/matrix-ut.hpp +79 -0
  307. data/ext/link_grammar/link-grammar/sat-solver/sat-encoder.cpp +2811 -0
  308. data/ext/link_grammar/link-grammar/sat-solver/sat-encoder.h +11 -0
  309. data/ext/link_grammar/link-grammar/sat-solver/sat-encoder.hpp +381 -0
  310. data/ext/link_grammar/link-grammar/sat-solver/trie.hpp +118 -0
  311. data/ext/link_grammar/link-grammar/sat-solver/util.cpp +23 -0
  312. data/ext/link_grammar/link-grammar/sat-solver/util.hpp +14 -0
  313. data/ext/link_grammar/link-grammar/sat-solver/variables.cpp +5 -0
  314. data/ext/link_grammar/link-grammar/sat-solver/variables.hpp +829 -0
  315. data/ext/link_grammar/link-grammar/sat-solver/word-tag.cpp +159 -0
  316. data/ext/link_grammar/link-grammar/sat-solver/word-tag.hpp +162 -0
  317. data/ext/link_grammar/link-grammar/spellcheck-aspell.c +148 -0
  318. data/ext/link_grammar/link-grammar/spellcheck-hun.c +136 -0
  319. data/ext/link_grammar/link-grammar/spellcheck.h +34 -0
  320. data/ext/link_grammar/link-grammar/string-set.c +169 -0
  321. data/ext/link_grammar/link-grammar/string-set.h +16 -0
  322. data/ext/link_grammar/link-grammar/structures.h +498 -0
  323. data/ext/link_grammar/link-grammar/tokenize.c +1049 -0
  324. data/ext/link_grammar/link-grammar/tokenize.h +15 -0
  325. data/ext/link_grammar/link-grammar/utilities.c +847 -0
  326. data/ext/link_grammar/link-grammar/utilities.h +281 -0
  327. data/ext/link_grammar/link-grammar/word-file.c +124 -0
  328. data/ext/link_grammar/link-grammar/word-file.h +15 -0
  329. data/ext/link_grammar/link-grammar/word-utils.c +526 -0
  330. data/ext/link_grammar/link-grammar/word-utils.h +152 -0
  331. data/ext/link_grammar/link_grammar.c +202 -0
  332. data/ext/link_grammar/link_grammar.h +99 -0
  333. data/grammar_cop.gemspec +24 -0
  334. data/lib/.DS_Store +0 -0
  335. data/lib/grammar_cop.rb +9 -0
  336. data/lib/grammar_cop/.DS_Store +0 -0
  337. data/lib/grammar_cop/dictionary.rb +19 -0
  338. data/lib/grammar_cop/linkage.rb +30 -0
  339. data/lib/grammar_cop/parse_options.rb +32 -0
  340. data/lib/grammar_cop/sentence.rb +36 -0
  341. data/lib/grammar_cop/version.rb +3 -0
  342. data/test/.DS_Store +0 -0
  343. data/test/grammar_cop_test.rb +27 -0
  344. metadata +407 -0
@@ -0,0 +1,15 @@
1
+ /********************************************************************************/
2
+ /* Copyright (c) 2004 */
3
+ /* Daniel Sleator, David Temperley, and John Lafferty */
4
+ /* All rights reserved */
5
+ /* */
6
+ /* Use of the link grammar parsing system is subject to the terms of the */
7
+ /* license set forth in the LICENSE file included with this software, */
8
+ /* and also available at http://www.link.cs.cmu.edu/link/license.html */
9
+ /* This license allows free redistribution and use in source and binary */
10
+ /* forms, with or without modification, subject to certain conditions. */
11
+ /* */
12
+ /********************************************************************************/
13
+ void insert_idiom(Dictionary dict, Dict_node *);
14
+ int contains_underbar(const char *);
15
+ int is_idiom_word(const char *);
@@ -0,0 +1,779 @@
1
+ /*
2
+ * Java JNI interfaces.
3
+ *
4
+ * This implements a very simple, low-brow, non-OOP interface.
5
+ * It could be improved.
6
+ */
7
+
8
+ #include <jni.h>
9
+ #include <locale.h>
10
+ #include <string.h>
11
+ #include <stdio.h>
12
+
13
+ #ifdef USE_PTHREADS
14
+ #include <pthread.h>
15
+ #endif
16
+
17
+ #include "api.h"
18
+ #include "corpus/corpus.h"
19
+ #include "error.h"
20
+ #include "jni-client.h"
21
+ #include "utilities.h"
22
+
23
+ typedef struct
24
+ {
25
+ Dictionary dict;
26
+ Parse_Options opts, panic_parse_opts;
27
+ Sentence sent;
28
+ Linkage linkage;
29
+ int num_linkages, cur_linkage;
30
+ #if DO_PHRASE_TREE
31
+ CNode* tree;
32
+ #endif
33
+ } per_thread_data;
34
+
35
+ /* XXX FIXME
36
+ * The per_thread_data struct should ideally be somehow
37
+ * fetched from JNIEnv, or as an opaque pointer in the class.
38
+ * Not clear how to do this .. perhaps use NewDirectByteBuffer()
39
+ * and the java.nio.ByteBuffer class ?
40
+ */
41
+ #ifdef USE_PTHREADS
42
+ static pthread_key_t java_key;
43
+ static pthread_once_t java_key_once = PTHREAD_ONCE_INIT;
44
+
45
+ static void java_key_alloc(void)
46
+ {
47
+ pthread_key_create(&java_key, free);
48
+ }
49
+ #else
50
+ static per_thread_data * global_ptd = NULL;
51
+ #endif
52
+
53
+ static per_thread_data * get_ptd(JNIEnv *env, jclass cls)
54
+ {
55
+ #ifdef USE_PTHREADS
56
+ per_thread_data *ptd = pthread_getspecific(java_key);
57
+ #else
58
+ per_thread_data *ptd = global_ptd;
59
+ #endif
60
+ if (!ptd) Java_org_linkgrammar_LinkGrammar_init(env, cls);
61
+ #ifdef USE_PTHREADS
62
+ ptd = pthread_getspecific(java_key);
63
+ #else
64
+ ptd = global_ptd;
65
+ #endif
66
+ return ptd;
67
+ }
68
+
69
+ static void setup_panic_parse_options(Parse_Options opts)
70
+ {
71
+ parse_options_set_disjunct_costf(opts, 3.0f);
72
+ parse_options_set_min_null_count(opts, 1);
73
+ parse_options_set_max_null_count(opts, MAX_SENTENCE);
74
+ parse_options_set_max_parse_time(opts, 60);
75
+ parse_options_set_use_fat_links(opts, FALSE);
76
+ parse_options_set_islands_ok(opts, TRUE);
77
+ parse_options_set_short_length(opts, 6);
78
+ parse_options_set_all_short_connectors(opts, TRUE);
79
+ parse_options_set_linkage_limit(opts, 100);
80
+ parse_options_set_verbosity(opts, 0);
81
+ parse_options_set_spell_guess(opts, FALSE);
82
+ }
83
+
84
+ static inline void test(void)
85
+ {
86
+ #ifdef DEBUG
87
+ printf("%d\n",word_contains("said",PAST_TENSE_FORM_MARKER,dict));
88
+ printf("%d\n",word_contains("gave.v",PAST_TENSE_FORM_MARKER,dict));
89
+ printf("%d\n",word_contains("have",PAST_TENSE_FORM_MARKER,dict));
90
+ printf("%d\n",word_contains("had",PAST_TENSE_FORM_MARKER,dict));
91
+ #endif
92
+ }
93
+
94
+ /* message: The string is encoded in modified UTF-8, per JNI 1.5 spec. */
95
+ static void throwException(JNIEnv *env, const char* message)
96
+ {
97
+ char *msg;
98
+ jclass exceptionClazz;
99
+ if ((*env)->ExceptionOccurred(env) != NULL) return;
100
+
101
+ msg = (char *) malloc(50+strlen(message));
102
+ strcpy(msg, "link-grammar JNI:\n");
103
+ strcat(msg, message);
104
+ exceptionClazz = (*env)->FindClass(env, "java/lang/RuntimeException");
105
+ if ((*env)->ThrowNew(env, exceptionClazz, msg) != 0)
106
+ (*env)->FatalError(env, "Fatal: link-grammar JNI: Cannot throw");
107
+ }
108
+
109
+ static per_thread_data * init(JNIEnv *env, jclass cls)
110
+ {
111
+ const char *codeset, *dict_version;
112
+ per_thread_data *ptd;
113
+
114
+ /* Get the locale from the environment...
115
+ * perhaps we should someday get it from the dictionary ??
116
+ */
117
+ setlocale(LC_ALL, "");
118
+
119
+ /* Everything breaks if the locale is not UTF-8; check for this,
120
+ * and force the issue !
121
+ */
122
+ codeset = nl_langinfo(CODESET);
123
+ if (!strstr(codeset, "UTF") && !strstr(codeset, "utf"))
124
+ {
125
+ prt_error("Warning: JNI: locale %s was not UTF-8; force-setting to en_US.UTF-8\n",
126
+ codeset);
127
+ setlocale(LC_CTYPE, "en_US.UTF-8");
128
+ }
129
+
130
+ ptd = (per_thread_data *) malloc(sizeof(per_thread_data));
131
+ memset(ptd, 0, sizeof(per_thread_data));
132
+
133
+ ptd->panic_parse_opts = parse_options_create();
134
+ setup_panic_parse_options(ptd->panic_parse_opts);
135
+
136
+ ptd->opts = parse_options_create();
137
+ parse_options_set_disjunct_costf(ptd->opts, 3.0f);
138
+ parse_options_set_max_sentence_length(ptd->opts, 170);
139
+ parse_options_set_max_parse_time(ptd->opts, 30);
140
+ parse_options_set_linkage_limit(ptd->opts, 1000);
141
+ parse_options_set_short_length(ptd->opts, 10);
142
+ parse_options_set_verbosity(ptd->opts,0);
143
+ parse_options_set_spell_guess(ptd->opts, FALSE);
144
+
145
+ /* Default to the english language; will need to fix
146
+ * this if/when more languages are supported.
147
+ */
148
+ ptd->dict = dictionary_create_lang("en");
149
+ if (!ptd->dict) throwException(env, "Error: unable to open dictionary");
150
+ else test();
151
+
152
+ dict_version = linkgrammar_get_dict_version(ptd->dict);
153
+ prt_error("Info: JNI: dictionary version %s\n", dict_version);
154
+
155
+ return ptd;
156
+ }
157
+
158
+ static void finish(per_thread_data *ptd)
159
+ {
160
+ if (ptd->sent)
161
+ sentence_delete(ptd->sent);
162
+ ptd->sent = NULL;
163
+
164
+ #if DO_PHRASE_TREE
165
+ if (tree)
166
+ linkage_free_constituent_tree(tree);
167
+ tree = NULL;
168
+ #endif
169
+
170
+ if (ptd->linkage)
171
+ linkage_delete(ptd->linkage);
172
+ ptd->linkage = NULL;
173
+
174
+ dictionary_delete(ptd->dict);
175
+ ptd->dict = NULL;
176
+
177
+ parse_options_delete(ptd->opts);
178
+ ptd->opts = NULL;
179
+
180
+ parse_options_delete(ptd->panic_parse_opts);
181
+ ptd->panic_parse_opts = NULL;
182
+
183
+ #ifdef USE_PTHREADS
184
+ pthread_setspecific(java_key, NULL);
185
+ #else
186
+ global_ptd = NULL;
187
+ #endif
188
+ free(ptd);
189
+ }
190
+
191
+ /* ================================================================= */
192
+ /* Misc utilities */
193
+
194
+ #ifdef DEBUG_DO_PHRASE_TREE
195
+ static void r_printTree(CNode* cn, int level)
196
+ {
197
+ int i;
198
+ CNode* c;
199
+
200
+ if (cn == NULL) return;
201
+
202
+ /* print label */
203
+ if (cn->label != NULL) {
204
+ printf("(%s ", cn->label);
205
+ } else {
206
+ printf("NULL\n");
207
+ }
208
+
209
+ /* Recurse on children. */
210
+ for (c = cn->child; c!=NULL; c=c->next) {
211
+ if (c->child)
212
+ r_printTree(c, level+1);
213
+ else
214
+ printf("%s ", c->label);
215
+ }
216
+ printf(")\n");
217
+ for (i=0; i<=level; i++)
218
+ printf (" ");
219
+ }
220
+
221
+ static void printTree(CNode* cn)
222
+ {
223
+ r_printTree(cn,0);
224
+ printf("\n");
225
+ }
226
+ #endif /* DEBUG */
227
+
228
+ static void jParse(JNIEnv *env, per_thread_data *ptd, char* inputString)
229
+ {
230
+ int maxlen;
231
+ Parse_Options opts = ptd->opts;
232
+ int jverbosity = parse_options_get_verbosity(opts);
233
+
234
+ if (ptd->sent)
235
+ sentence_delete(ptd->sent);
236
+
237
+ if (ptd->dict == NULL) throwException(env, "jParse: dictionary not open\n");
238
+ if (inputString == NULL) throwException(env, "jParse: no input sentence!\n");
239
+ ptd->sent = sentence_create(inputString, ptd->dict);
240
+ ptd->num_linkages = 0;
241
+
242
+ if (ptd->sent == NULL)
243
+ return;
244
+
245
+ maxlen = parse_options_get_max_sentence_length(ptd->opts);
246
+ if (maxlen < sentence_length(ptd->sent))
247
+ {
248
+ if (jverbosity > 0) {
249
+ prt_error("Error: JNI: Sentence length (%d words) exceeds maximum allowable (%d words)\n",
250
+ sentence_length(ptd->sent), maxlen);
251
+ }
252
+ sentence_delete(ptd->sent);
253
+ ptd->sent = NULL;
254
+ return;
255
+ }
256
+
257
+ /* First parse with cost 0 or 1 and no null links or fat links */
258
+ parse_options_set_disjunct_costf(opts, 2.0f);
259
+ parse_options_set_min_null_count(opts, 0);
260
+ parse_options_set_max_null_count(opts, 0);
261
+ parse_options_set_use_fat_links(opts, FALSE);
262
+ parse_options_reset_resources(opts);
263
+
264
+ ptd->num_linkages = sentence_parse(ptd->sent, ptd->opts);
265
+
266
+ /* If failed, try with fat links ... */
267
+ if ((0 == ptd->num_linkages) && sentence_contains_conjunction(ptd->sent))
268
+ {
269
+ parse_options_set_use_fat_links(opts, TRUE);
270
+ ptd->num_linkages = sentence_parse(ptd->sent, ptd->opts);
271
+ }
272
+
273
+ /* If still failed, try again with null links */
274
+ if (0 == ptd->num_linkages)
275
+ {
276
+ if (jverbosity > 0) prt_error("Warning: JNI: No complete linkages found.\n");
277
+ if (parse_options_get_allow_null(opts))
278
+ {
279
+ parse_options_set_min_null_count(opts, 1);
280
+ parse_options_set_max_null_count(opts, sentence_length(ptd->sent));
281
+ ptd->num_linkages = sentence_parse(ptd->sent, opts);
282
+ }
283
+ }
284
+
285
+ if (parse_options_timer_expired(opts))
286
+ {
287
+ if (jverbosity > 0) prt_error("Warning: JNI: Timer is expired!\n");
288
+ }
289
+ if (parse_options_memory_exhausted(opts))
290
+ {
291
+ if (jverbosity > 0) prt_error("Warning: JNI: Memory is exhausted!\n");
292
+ }
293
+
294
+ if ((ptd->num_linkages == 0) &&
295
+ parse_options_resources_exhausted(opts))
296
+ {
297
+ parse_options_print_total_time(opts);
298
+ if (jverbosity > 0) prt_error("Warning: JNI: Entering \"panic\" mode...\n");
299
+ parse_options_reset_resources(ptd->panic_parse_opts);
300
+ parse_options_set_verbosity(ptd->panic_parse_opts, jverbosity);
301
+ ptd->num_linkages = sentence_parse(ptd->sent, ptd->panic_parse_opts);
302
+ if (parse_options_timer_expired(ptd->panic_parse_opts)) {
303
+ if (jverbosity > 0) prt_error("Error: JNI: Timer is expired!\n");
304
+ }
305
+ }
306
+ }
307
+
308
+ static void makeLinkage(per_thread_data *ptd)
309
+ {
310
+ if (ptd->cur_linkage < ptd->num_linkages)
311
+ {
312
+ if (ptd->linkage)
313
+ linkage_delete(ptd->linkage);
314
+
315
+ ptd->linkage = linkage_create(ptd->cur_linkage,ptd->sent,ptd->opts);
316
+ linkage_compute_union(ptd->linkage);
317
+ linkage_set_current_sublinkage(ptd->linkage,
318
+ linkage_get_num_sublinkages(ptd->linkage)-1);
319
+
320
+ #if DO_PHRASE_TREE
321
+ if (tree)
322
+ linkage_free_constituent_tree(tree);
323
+ tree = linkage_constituent_tree(linkage);
324
+ printTree(tree);
325
+ #endif
326
+ }
327
+ }
328
+
329
+ /* ================================================================ */
330
+ /* Java JNI wrappers */
331
+
332
+ /*
333
+ * Class: LinkGrammar
334
+ * Method: getVersion
335
+ * Signature: (I)Ljava/lang/String;
336
+ */
337
+ JNIEXPORT jstring JNICALL
338
+ Java_org_linkgrammar_LinkGrammar_getVersion(JNIEnv *env, jclass cls)
339
+ {
340
+ const char *s = linkgrammar_get_version();
341
+ jstring j = (*env)->NewStringUTF(env, s);
342
+ return j;
343
+ }
344
+
345
+ JNIEXPORT jstring JNICALL
346
+ Java_org_linkgrammar_LinkGrammar_getDictVersion(JNIEnv *env, jclass cls)
347
+ {
348
+ per_thread_data *ptd = get_ptd(env, cls);
349
+ const char *s = linkgrammar_get_dict_version(ptd->dict);
350
+ jstring j = (*env)->NewStringUTF(env, s);
351
+ return j;
352
+ }
353
+
354
+ JNIEXPORT void JNICALL
355
+ Java_org_linkgrammar_LinkGrammar_setMaxParseSeconds(JNIEnv *env, jclass cls, jint maxParseSeconds)
356
+ {
357
+ per_thread_data *ptd = get_ptd(env, cls);;
358
+ parse_options_set_max_parse_time(ptd->opts, maxParseSeconds);
359
+ }
360
+
361
+ JNIEXPORT void JNICALL
362
+ Java_org_linkgrammar_LinkGrammar_setMaxCost(JNIEnv *env, jclass cls, jint maxCost)
363
+ {
364
+ per_thread_data *ptd = get_ptd(env, cls);;
365
+ parse_options_set_disjunct_cost(ptd->opts, maxCost);
366
+ }
367
+
368
+ JNIEXPORT void JNICALL
369
+ Java_org_linkgrammar_LinkGrammar_setDictionariesPath(JNIEnv *env,
370
+ jclass cls, jstring path)
371
+ {
372
+ const char *nativePath = (*env)->GetStringUTFChars(env,path, 0);
373
+
374
+ // Java passes null pointers as the string "null"
375
+ if (nativePath && strcmp(nativePath, "null"))
376
+ {
377
+ dictionary_set_data_dir(nativePath);
378
+ }
379
+ (*env)->ReleaseStringUTFChars(env,path, nativePath);
380
+ }
381
+
382
+ /*
383
+ * Class: LinkGrammar
384
+ * Method: init
385
+ * Signature: ()V
386
+ */
387
+ JNIEXPORT void JNICALL
388
+ Java_org_linkgrammar_LinkGrammar_init(JNIEnv *env, jclass cls)
389
+ {
390
+ #ifdef USE_PTHREADS
391
+ per_thread_data *ptd;
392
+ pthread_once(&java_key_once, java_key_alloc);
393
+ ptd = pthread_getspecific(java_key);
394
+ if (ptd) return;
395
+ ptd = init(env, cls);
396
+ pthread_setspecific(java_key, ptd);
397
+ #else
398
+ if (global_ptd) return;
399
+ global_ptd = init(env, cls);
400
+ #endif
401
+ }
402
+
403
+ /*
404
+ * Class: LinkGrammar
405
+ * Method: parse
406
+ * Signature: (Ljava/lang/String;)V
407
+ */
408
+ JNIEXPORT void JNICALL
409
+ Java_org_linkgrammar_LinkGrammar_parse(JNIEnv *env, jclass cls, jstring str)
410
+ {
411
+ const char *cStr;
412
+ char * tmp;
413
+ per_thread_data *ptd = get_ptd(env, cls);;
414
+ cStr = (*env)->GetStringUTFChars(env,str,0);
415
+ tmp = strdup(cStr);
416
+ jParse(env, ptd, tmp);
417
+ free(tmp);
418
+ (*env)->ReleaseStringUTFChars(env,str,cStr);
419
+ }
420
+
421
+ /*
422
+ * Class: LinkGrammar
423
+ * Method: close
424
+ * Signature: ()V
425
+ */
426
+ JNIEXPORT void JNICALL
427
+ Java_org_linkgrammar_LinkGrammar_close(JNIEnv *env, jclass cls)
428
+ {
429
+ per_thread_data *ptd = get_ptd(env, cls);;
430
+ finish(ptd);
431
+ }
432
+
433
+ /*
434
+ * Class: LinkGrammar
435
+ * Method: numWords
436
+ * Signature: ()I
437
+ */
438
+ JNIEXPORT jint JNICALL
439
+ Java_org_linkgrammar_LinkGrammar_getNumWords(JNIEnv *env, jclass cls)
440
+ {
441
+ per_thread_data *ptd = get_ptd(env, cls);;
442
+ return linkage_get_num_words(ptd->linkage);
443
+ }
444
+
445
+ /*
446
+ * Class: LinkGrammar
447
+ * Method: getWord
448
+ * Signature: (I)Ljava/lang/String;
449
+ */
450
+ JNIEXPORT jstring JNICALL
451
+ Java_org_linkgrammar_LinkGrammar_getWord(JNIEnv *env, jclass cls, jint i)
452
+ {
453
+ per_thread_data *ptd = get_ptd(env, cls);
454
+
455
+ /* Does not need to be freed, points into sentence */
456
+ const char * w = sentence_get_word(ptd->sent, i);
457
+
458
+ /* FWIW, j will be null if w is utf8-encoded Japanese or Chinese.
459
+ * I guess my JVM is not capable of handling Chinese/Japanese ??
460
+ * Maybe some special java thing needs to be installed?
461
+ */
462
+ jstring j = (*env)->NewStringUTF(env, w);
463
+ return j;
464
+ }
465
+
466
+ JNIEXPORT jstring JNICALL
467
+ Java_org_linkgrammar_LinkGrammar_getLinkageWord(JNIEnv *env, jclass cls, jint i)
468
+ {
469
+ per_thread_data *ptd = get_ptd(env, cls);
470
+
471
+ /* Does not need to be freed, points into data structures */
472
+ /* Returns the inflected word. */
473
+ const char * w = linkage_get_word(ptd->linkage, i);
474
+ jstring j = (*env)->NewStringUTF(env, w);
475
+ return j;
476
+ }
477
+
478
+ JNIEXPORT jstring JNICALL
479
+ Java_org_linkgrammar_LinkGrammar_getLinkageDisjunct(JNIEnv *env, jclass cls, jint i)
480
+ {
481
+ jstring j;
482
+ per_thread_data *ptd = get_ptd(env, cls);
483
+
484
+ /* does not need to be freed, points into data structures */
485
+ /* returns the inflected word. */
486
+ const char * w = linkage_get_disjunct_str(ptd->linkage, i);
487
+ if (NULL == w) j = NULL;
488
+ else j = (*env)->NewStringUTF(env, w);
489
+ return j;
490
+ }
491
+
492
+ JNIEXPORT jstring JNICALL
493
+ Java_org_linkgrammar_LinkGrammar_getLinkageSense(JNIEnv *env,
494
+ jclass cls, jint i, jint j)
495
+ {
496
+ per_thread_data *ptd = get_ptd(env, cls);
497
+ Linkage lkg = ptd->linkage;
498
+ Linkage_info *lifo = lkg->info;
499
+ Sense *sns;
500
+ const char * w = NULL;
501
+ jstring js;
502
+
503
+ lg_corpus_linkage_senses(lkg);
504
+ sns = lg_get_word_sense(lifo, i);
505
+ while ((0 < j) && sns)
506
+ {
507
+ sns = lg_sense_next(sns);
508
+ j--;
509
+ }
510
+
511
+ /* does not need to be freed, points into data structures */
512
+ if (sns) w = lg_sense_get_sense(sns);
513
+
514
+ if (w) js = (*env)->NewStringUTF(env, w);
515
+ else js = NULL;
516
+ return js;
517
+ }
518
+
519
+ JNIEXPORT jdouble JNICALL
520
+ Java_org_linkgrammar_LinkGrammar_getLinkageSenseScore(JNIEnv *env,
521
+ jclass cls, jint i, jint j)
522
+ {
523
+ per_thread_data *ptd = get_ptd(env, cls);
524
+ Linkage lkg = ptd->linkage;
525
+ Linkage_info *lifo = lkg->info;
526
+ Sense *sns;
527
+ double score = 0.0;
528
+
529
+ sns = lg_get_word_sense(lifo, i);
530
+ while ((0 < j) && sns)
531
+ {
532
+ sns = lg_sense_next(sns);
533
+ j--;
534
+ }
535
+
536
+ if (sns) score = lg_sense_get_score(sns);
537
+
538
+ return score;
539
+ }
540
+
541
+ /*
542
+ * Class: LinkGrammar
543
+ * Method: numSkippedWords
544
+ * Signature: ()I
545
+ */
546
+ JNIEXPORT jint JNICALL
547
+ Java_org_linkgrammar_LinkGrammar_getNumSkippedWords(JNIEnv *env, jclass cls)
548
+ {
549
+ per_thread_data *ptd = get_ptd(env, cls);
550
+ return sentence_null_count(ptd->sent);
551
+ }
552
+
553
+ /*
554
+ * Class: LinkGrammar
555
+ * Method: numLinkages
556
+ * Signature: ()I
557
+ */
558
+ JNIEXPORT jint JNICALL
559
+ Java_org_linkgrammar_LinkGrammar_getNumLinkages(JNIEnv *env, jclass cls)
560
+ {
561
+ per_thread_data *ptd = get_ptd(env, cls);
562
+ return sentence_num_valid_linkages(ptd->sent);
563
+ }
564
+
565
+ /*
566
+ * Class: LinkGrammar
567
+ * Method: makeLinkage
568
+ * Signature: (I)I
569
+ */
570
+ JNIEXPORT void JNICALL
571
+ Java_org_linkgrammar_LinkGrammar_makeLinkage(JNIEnv *env, jclass cls, jint i)
572
+ {
573
+ per_thread_data *ptd = get_ptd(env, cls);
574
+ ptd->cur_linkage = i;
575
+ makeLinkage(ptd);
576
+ }
577
+
578
+ /*
579
+ * Class: LinkGrammar
580
+ * Method: linkageNumViolations
581
+ * Signature: ()I
582
+ */
583
+ JNIEXPORT jint JNICALL
584
+ Java_org_linkgrammar_LinkGrammar_getLinkageNumViolations(JNIEnv *env, jclass cls)
585
+ {
586
+ per_thread_data *ptd = get_ptd(env, cls);
587
+ return sentence_num_violations(ptd->sent, ptd->cur_linkage);
588
+ }
589
+
590
+ /*
591
+ * Class: LinkGrammar
592
+ * Method: linkageAndCost
593
+ * Signature: ()I
594
+ */
595
+ JNIEXPORT jint JNICALL
596
+ Java_org_linkgrammar_LinkGrammar_getLinkageAndCost(JNIEnv *env, jclass cls)
597
+ {
598
+ per_thread_data *ptd = get_ptd(env, cls);
599
+ return sentence_and_cost(ptd->sent, ptd->cur_linkage);
600
+ }
601
+
602
+ /*
603
+ * Class: LinkGrammar
604
+ * Method: linkageDisjunctCost
605
+ * Signature: ()I
606
+ */
607
+ JNIEXPORT jint JNICALL
608
+ Java_org_linkgrammar_LinkGrammar_getLinkageDisjunctCost(JNIEnv *env, jclass cls)
609
+ {
610
+ per_thread_data *ptd = get_ptd(env, cls);
611
+ return sentence_disjunct_cost(ptd->sent, ptd->cur_linkage);
612
+ }
613
+
614
+ /*
615
+ * Class: LinkGrammar
616
+ * Method: linkageLinkCost
617
+ * Signature: ()I
618
+ */
619
+ JNIEXPORT jint JNICALL
620
+ Java_org_linkgrammar_LinkGrammar_getLinkageLinkCost(JNIEnv *env, jclass cls)
621
+ {
622
+ per_thread_data *ptd = get_ptd(env, cls);
623
+ return sentence_link_cost(ptd->sent, ptd->cur_linkage);
624
+ }
625
+
626
+ /*
627
+ * Class: LinkGrammar
628
+ * Method: getNumLinks
629
+ * Signature: ()I
630
+ */
631
+ JNIEXPORT jint JNICALL
632
+ Java_org_linkgrammar_LinkGrammar_getNumLinks(JNIEnv *env, jclass cls)
633
+ {
634
+ per_thread_data *ptd = get_ptd(env, cls);
635
+ return linkage_get_num_links(ptd->linkage);
636
+ }
637
+
638
+ /*
639
+ * Class: LinkGrammar
640
+ * Method: getLinkLWord
641
+ * Signature: (I)I
642
+ */
643
+ JNIEXPORT jint JNICALL
644
+ Java_org_linkgrammar_LinkGrammar_getLinkLWord(JNIEnv *env, jclass cls, jint i)
645
+ {
646
+ per_thread_data *ptd = get_ptd(env, cls);
647
+ return linkage_get_link_lword(ptd->linkage, i);
648
+ }
649
+
650
+ /*
651
+ * Class: LinkGrammar
652
+ * Method: getLinkRWord
653
+ * Signature: (I)I
654
+ */
655
+ JNIEXPORT jint JNICALL
656
+ Java_org_linkgrammar_LinkGrammar_getLinkRWord(JNIEnv *env, jclass cls, jint i)
657
+ {
658
+ per_thread_data *ptd = get_ptd(env, cls);
659
+ return linkage_get_link_rword(ptd->linkage, i);
660
+ }
661
+
662
+ /*
663
+ * Class: LinkGrammar
664
+ * Method: getLinkLLabel
665
+ * Signature: (I)Ljava/lang/String;
666
+ */
667
+ JNIEXPORT jstring JNICALL
668
+ Java_org_linkgrammar_LinkGrammar_getLinkLLabel(JNIEnv *env, jclass cls, jint i)
669
+ {
670
+ per_thread_data *ptd = get_ptd(env, cls);
671
+ /* Does not need to be freed, points into linkage */
672
+ const char *s = linkage_get_link_llabel(ptd->linkage, i);
673
+ jstring j = (*env)->NewStringUTF(env, s);
674
+ return j;
675
+ }
676
+
677
+ /*
678
+ * Class: LinkGrammar
679
+ * Method: getLinkRLabel
680
+ * Signature: (I)Ljava/lang/String;
681
+ */
682
+ JNIEXPORT jstring JNICALL
683
+ Java_org_linkgrammar_LinkGrammar_getLinkRLabel(JNIEnv *env, jclass cls, jint i)
684
+ {
685
+ per_thread_data *ptd = get_ptd(env, cls);
686
+ /* Does not need to be freed, points into linkage */
687
+ const char *s = linkage_get_link_rlabel(ptd->linkage, i);
688
+ jstring j = (*env)->NewStringUTF(env, s);
689
+ return j;
690
+ }
691
+
692
+ /*
693
+ * Class: LinkGrammar
694
+ * Method: getLinkLabel
695
+ * Signature: (I)Ljava/lang/String;
696
+ */
697
+ JNIEXPORT jstring JNICALL
698
+ Java_org_linkgrammar_LinkGrammar_getLinkLabel(JNIEnv *env, jclass cls, jint i)
699
+ {
700
+ per_thread_data *ptd = get_ptd(env, cls);
701
+ /* Does not need to be freed, points into linkage */
702
+ const char *s = linkage_get_link_label(ptd->linkage, i);
703
+ jstring j = (*env)->NewStringUTF(env, s);
704
+ return j;
705
+ }
706
+
707
+ /*
708
+ * Class: LinkGrammar
709
+ * Method: constituentString
710
+ * Signature: ()Ljava/lang/String;
711
+ */
712
+ JNIEXPORT jstring JNICALL
713
+ Java_org_linkgrammar_LinkGrammar_getConstituentString(JNIEnv *env, jclass cls)
714
+ {
715
+ per_thread_data *ptd = get_ptd(env, cls);
716
+ /* mode 1 prints a lisp-style string, nicely indented.
717
+ * mode 2 prints a lisp-style string, but with square brackets.
718
+ * mode 3 prints a lisp-style string, one one single line.
719
+ */
720
+ /* char *s = linkage_print_constituent_tree(linkage, 1); */
721
+ char *s = linkage_print_constituent_tree(ptd->linkage, 3);
722
+ jstring j = (*env)->NewStringUTF(env, s);
723
+ linkage_free_constituent_tree_str(s);
724
+ return j;
725
+ }
726
+
727
+ /*
728
+ * Class: LinkGrammar
729
+ * Method: linkString
730
+ * Signature: ()Ljava/lang/String;
731
+ */
732
+ JNIEXPORT jstring JNICALL
733
+ Java_org_linkgrammar_LinkGrammar_getLinkString(JNIEnv *env, jclass cls)
734
+ {
735
+ per_thread_data *ptd = get_ptd(env, cls);
736
+ char *s = linkage_print_diagram(ptd->linkage);
737
+ jstring j = (*env)->NewStringUTF(env, s);
738
+ linkage_free_diagram(s);
739
+ return j;
740
+ }
741
+
742
+ /*
743
+ * Class: LinkParser
744
+ * Method: isPastTenseForm
745
+ * Signature: (Ljava/lang/String;)Z
746
+ *
747
+ * @deprecated -- past-tense verbs are tagged with .v-d or .w-d or .q-d
748
+ * subscripts. use those instead to figure out if a verb is past tense.
749
+ */
750
+ JNIEXPORT jboolean JNICALL
751
+ Java_org_linkgrammar_LinkGrammar_isPastTenseForm(JNIEnv *env, jclass cls, jstring str)
752
+ {
753
+ jboolean rv = FALSE;
754
+
755
+ per_thread_data *ptd = get_ptd(env, cls);
756
+ const char *cStr = (*env)->GetStringUTFChars(env,str,0);
757
+ if (dictionary_is_past_tense_form(ptd->dict, cStr) == 1)
758
+ rv = TRUE;
759
+ (*env)->ReleaseStringUTFChars(env,str,cStr);
760
+ return rv;
761
+ }
762
+
763
+ /*
764
+ * Class: LinkParser
765
+ * Method: isEntity
766
+ * Signature: (Ljava/lang/String;)Z
767
+ */
768
+ JNIEXPORT jboolean JNICALL
769
+ Java_org_linkgrammar_LinkGrammar_isEntity(JNIEnv *env, jclass cls, jstring str)
770
+ {
771
+ jboolean rv = FALSE;
772
+
773
+ per_thread_data *ptd = get_ptd(env, cls);
774
+ const char *cStr = (*env)->GetStringUTFChars(env,str,0);
775
+ if (dictionary_is_entity(ptd->dict, cStr) == 1)
776
+ rv = TRUE;
777
+ (*env)->ReleaseStringUTFChars(env,str,cStr);
778
+ return rv;
779
+ }