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,25 @@
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
+
14
+ s64 table_lookup(Sentence, int, int, Connector *, Connector *, int);
15
+ int do_match(Sentence, Connector *a, Connector *b, int wa, int wb);
16
+ int x_match(Sentence, Connector *a, Connector *b);
17
+ s64 do_parse(Sentence sent, int mincost, Parse_Options opts);
18
+ void conjunction_prune(Sentence sent, Parse_Options opts);
19
+ void count_set_effective_distance(Sentence sent);
20
+ void count_unset_effective_distance(Sentence sent);
21
+ void delete_unmarked_disjuncts(Sentence sent);
22
+
23
+ void init_count(Sentence sent);
24
+ void free_count(Sentence sent);
25
+
@@ -0,0 +1,261 @@
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
+
14
+ #include <stdio.h>
15
+ #include <string.h>
16
+ #include "disjunct-utils.h"
17
+ #include "externs.h"
18
+ #include "structures.h"
19
+ #include "utilities.h"
20
+ #include "word-utils.h"
21
+
22
+ #ifndef DISJUNCT_UTILS_CC
23
+ #define DISJUNCT_UTILS_CC
24
+ /* Disjunct utilities ... */
25
+
26
+ /**
27
+ * free_disjuncts() -- free the list of disjuncts pointed to by c
28
+ * (does not free any strings)
29
+ */
30
+ void free_disjuncts(Disjunct *c)
31
+ {
32
+ Disjunct *c1;
33
+ for (;c != NULL; c = c1) {
34
+ c1 = c->next;
35
+ free_connectors(c->left);
36
+ free_connectors(c->right);
37
+ xfree((char *)c, sizeof(Disjunct));
38
+ }
39
+ }
40
+
41
+ /**
42
+ * This builds a new copy of the disjunct pointed to by d (except for the
43
+ * next field which is set to NULL). Strings, as usual,
44
+ * are not copied.
45
+ */
46
+ Disjunct * copy_disjunct(Disjunct * d)
47
+ {
48
+ Disjunct * d1;
49
+ if (d == NULL) return NULL;
50
+ d1 = (Disjunct *) xalloc(sizeof(Disjunct));
51
+ *d1 = *d;
52
+ d1->next = NULL;
53
+ d1->left = copy_connectors(d->left);
54
+ d1->right = copy_connectors(d->right);
55
+ return d1;
56
+ }
57
+
58
+ /**
59
+ * Destructively catenates the two disjunct lists d1 followed by d2.
60
+ * Doesn't change the contents of the disjuncts.
61
+ * Traverses the first list, but not the second.
62
+ */
63
+ Disjunct * catenate_disjuncts(Disjunct *d1, Disjunct *d2)
64
+ {
65
+ Disjunct * dis = d1;
66
+
67
+ if (d1 == NULL) return d2;
68
+ if (d2 == NULL) return d1;
69
+ while (dis->next != NULL) dis = dis->next;
70
+ dis->next = d2;
71
+ return d1;
72
+ }
73
+
74
+ /** Returns the number of disjuncts in the list pointed to by d */
75
+ int count_disjuncts(Disjunct * d)
76
+ {
77
+ int count = 0;
78
+ for (; d != NULL; d = d->next)
79
+ {
80
+ count++;
81
+ }
82
+ return count;
83
+ }
84
+
85
+ /* ============================================================= */
86
+ typedef struct disjunct_dup_table_s disjunct_dup_table;
87
+ struct disjunct_dup_table_s
88
+ {
89
+ int dup_table_size;
90
+ Disjunct ** dup_table;
91
+ };
92
+
93
+ /**
94
+ * This is a hash function for disjuncts
95
+ *
96
+ * This is the old version that doesn't check for domination, just
97
+ * equality.
98
+ */
99
+ static inline int old_hash_disjunct(disjunct_dup_table *dt, Disjunct * d)
100
+ {
101
+ int i;
102
+ Connector *e;
103
+ i = 0;
104
+ for (e = d->left ; e != NULL; e = e->next) {
105
+ i += string_hash(e->string);
106
+ }
107
+ for (e = d->right ; e != NULL; e = e->next) {
108
+ i += string_hash(e->string);
109
+ }
110
+ i += string_hash(d->string);
111
+ i += (i>>10);
112
+ return (i & (dt->dup_table_size-1));
113
+ }
114
+
115
+ /**
116
+ * The connectors must be exactly equal. A similar function
117
+ * is connectors_equal_AND(), but that ignores priorities,
118
+ * this does not.
119
+ */
120
+ static int connectors_equal_prune(Connector *c1, Connector *c2)
121
+ {
122
+ return (c1->label == c2->label) &&
123
+ (c1->multi == c2->multi) &&
124
+ (c1->priority == c2->priority) &&
125
+ (strcmp(c1->string, c2->string) == 0);
126
+ }
127
+
128
+ /** returns TRUE if the disjuncts are exactly the same */
129
+ static int disjuncts_equal(Disjunct * d1, Disjunct * d2)
130
+ {
131
+ Connector *e1, *e2;
132
+ e1 = d1->left;
133
+ e2 = d2->left;
134
+ while((e1!=NULL) && (e2!=NULL)) {
135
+ if (!connectors_equal_prune(e1,e2)) break;
136
+ e1 = e1->next;
137
+ e2 = e2->next;
138
+ }
139
+ if ((e1!=NULL) || (e2!=NULL)) return FALSE;
140
+ e1 = d1->right;
141
+ e2 = d2->right;
142
+ while((e1!=NULL) && (e2!=NULL)) {
143
+ if (!connectors_equal_prune(e1,e2)) break;
144
+ e1 = e1->next;
145
+ e2 = e2->next;
146
+ }
147
+ if ((e1!=NULL) || (e2!=NULL)) return FALSE;
148
+ return (strcmp(d1->string, d2->string) == 0);
149
+ }
150
+
151
+ static disjunct_dup_table * disjunct_dup_table_new(size_t sz)
152
+ {
153
+ size_t i;
154
+ disjunct_dup_table *dt;
155
+ dt = (disjunct_dup_table *) malloc(sizeof(disjunct_dup_table));
156
+
157
+ dt->dup_table_size = sz;
158
+ dt->dup_table = (Disjunct **) xalloc(sz * sizeof(Disjunct *));
159
+
160
+ for (i=0; i<sz; i++) dt->dup_table[i] = NULL;
161
+
162
+ return dt;
163
+ }
164
+
165
+ static void disjunct_dup_table_delete(disjunct_dup_table *dt)
166
+ {
167
+ xfree((char *) dt->dup_table, dt->dup_table_size * sizeof(Disjunct *));
168
+ free(dt);
169
+ }
170
+
171
+ /**
172
+ * Takes the list of disjuncts pointed to by d, eliminates all
173
+ * duplicates, and returns a pointer to a new list.
174
+ * It frees the disjuncts that are eliminated.
175
+ */
176
+ Disjunct * eliminate_duplicate_disjuncts(Disjunct * d)
177
+ {
178
+ int i, h, count;
179
+ Disjunct *dn, *dx;
180
+ disjunct_dup_table *dt;
181
+
182
+ count = 0;
183
+ dt = disjunct_dup_table_new(next_power_of_two_up(2 * count_disjuncts(d)));
184
+
185
+ while (d != NULL)
186
+ {
187
+ dn = d->next;
188
+ h = old_hash_disjunct(dt, d);
189
+
190
+ for (dx = dt->dup_table[h]; dx!=NULL; dx=dx->next)
191
+ {
192
+ if (disjuncts_equal(dx, d)) break;
193
+ }
194
+ if (dx == NULL)
195
+ {
196
+ d->next = dt->dup_table[h];
197
+ dt->dup_table[h] = d;
198
+ }
199
+ else
200
+ {
201
+ d->next = NULL; /* to prevent it from freeing the whole list */
202
+ if (d->cost < dx->cost) dx->cost = d->cost;
203
+ free_disjuncts(d);
204
+ count++;
205
+ }
206
+ d = dn;
207
+ }
208
+
209
+ /* d is already null */
210
+ for (i=0; i<dt->dup_table_size; i++)
211
+ {
212
+ for (dn = dt->dup_table[i]; dn != NULL; dn = dx) {
213
+ dx = dn->next;
214
+ dn->next = d;
215
+ d = dn;
216
+ }
217
+ }
218
+
219
+ if ((verbosity > 2) && (count != 0)) printf("killed %d duplicates\n", count);
220
+
221
+ disjunct_dup_table_delete(dt);
222
+ return d;
223
+ }
224
+
225
+ /* ============================================================= */
226
+
227
+ /* Return the stringified disjunct.
228
+ * Be sure to free the string upon return.
229
+ */
230
+
231
+ static char * prt_con(Connector *c, char * p, char dir)
232
+ {
233
+ size_t n;
234
+
235
+ if (NULL == c) return p;
236
+ p = prt_con (c->next, p, dir);
237
+
238
+ if (c->multi)
239
+ {
240
+ n = sprintf(p, "@%s%c ", c->string, dir);
241
+ }
242
+ else
243
+ {
244
+ n = sprintf(p, "%s%c ", c->string, dir);
245
+ }
246
+ return p+n;
247
+ }
248
+
249
+ char * print_one_disjunct(Disjunct *dj)
250
+ {
251
+ char buff[MAX_LINE];
252
+ char * p = buff;
253
+
254
+ p = prt_con(dj->left, p, '-');
255
+ p = prt_con(dj->right, p, '+');
256
+
257
+ return strdup(buff);
258
+ }
259
+
260
+ #endif
261
+ /* ========================= END OF FILE ============================== */
@@ -0,0 +1,27 @@
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
+
14
+ #ifndef _LINK_GRAMMAR_DISJUNCT_UTILS_H_
15
+ #define _LINK_GRAMMAR_DISJUNCT_UTILS_H_
16
+
17
+ #include "api-types.h"
18
+
19
+ /* Disjunct utilities ... */
20
+ void free_disjuncts(Disjunct *);
21
+ int count_disjuncts(Disjunct *);
22
+ Disjunct * copy_disjunct(Disjunct * );
23
+ Disjunct * catenate_disjuncts(Disjunct *, Disjunct *);
24
+ Disjunct * eliminate_duplicate_disjuncts(Disjunct * );
25
+ char * print_one_disjunct(Disjunct *);
26
+
27
+ #endif /* _LINK_GRAMMAR_DISJUNCT_UTILS_H_ */
@@ -0,0 +1,138 @@
1
+ /*************************************************************************/
2
+ /* Copyright (c) 2008, 2009 Linas Vepstas */
3
+ /* All rights reserved */
4
+ /* */
5
+ /* Use of the link grammar parsing system is subject to the terms of the */
6
+ /* license set forth in the LICENSE file included with this software, */
7
+ /* and also available at http://www.link.cs.cmu.edu/link/license.html */
8
+ /* This license allows free redistribution and use in source and binary */
9
+ /* forms, with or without modification, subject to certain conditions. */
10
+ /* */
11
+ /*************************************************************************/
12
+ /*
13
+ * disjuncts.c
14
+ *
15
+ * Miscellaneous utilities for returning the list of disjuncts that
16
+ * were acutally used in a given parse of a sentence.
17
+ */
18
+
19
+ #include <stdlib.h>
20
+ #include <string.h>
21
+ #include "api-structures.h"
22
+ #include "disjuncts.h"
23
+ #include "utilities.h"
24
+
25
+ /* ========================================================= */
26
+
27
+ /**
28
+ * lg_compute_disjunct_strings -- Given sentence, compute disjuncts.
29
+ *
30
+ * This routine will compute the string representation of the disjunct
31
+ * used for each word in parsing the given sentence. A string
32
+ * representation of the disjunct is needed for most of the corpus
33
+ * statistics functions: this string, together with the "inflected"
34
+ * word, is used as a key to index the statistics information in the
35
+ * database.
36
+ *
37
+ * XXX This implementation works, but I don't think its the simplest
38
+ * one. I think that a better implementation would have used
39
+ * sent->parse_info->chosen_disjuncts[w] to get the one that was used,
40
+ * and then print_disjuncts() to print it.
41
+ */
42
+ void lg_compute_disjunct_strings(Sentence sent, Linkage_info *lifo)
43
+ {
44
+ char djstr[MAX_TOKEN_LENGTH*20]; /* no word will have more than 20 links */
45
+ size_t copied, left;
46
+ int i, w;
47
+ int nwords = sent->length;
48
+ Parse_info pi = sent->parse_info;
49
+ int nlinks = pi->N_links;
50
+ int *djlist, *djloco, *djcount;
51
+
52
+ if (lifo->disjunct_list_str) return;
53
+ lifo->nwords = nwords;
54
+ lifo->disjunct_list_str = (char **) malloc(nwords * sizeof(char *));
55
+ memset(lifo->disjunct_list_str, 0, nwords * sizeof(char *));
56
+
57
+ djcount = (int *) malloc (sizeof(int) * (nwords + 2*nwords*nlinks));
58
+ djlist = djcount + nwords;
59
+ djloco = djlist + nwords*nlinks;
60
+
61
+ /* Decrement nwords, so as to ignore the RIGHT-WALL */
62
+ nwords --;
63
+
64
+ for (w=0; w<nwords; w++)
65
+ {
66
+ djcount[w] = 0;
67
+ }
68
+
69
+ /* Create a table of disjuncts for each word. */
70
+ for (i=0; i<nlinks; i++)
71
+ {
72
+ int lword = pi->link_array[i].l;
73
+ int rword = pi->link_array[i].r;
74
+ int slot = djcount[lword];
75
+
76
+ /* Skip over RW link to the right wall */
77
+ if (nwords <= rword) continue;
78
+
79
+ djlist[lword*nlinks + slot] = i;
80
+ djloco[lword*nlinks + slot] = rword;
81
+ djcount[lword] ++;
82
+
83
+ slot = djcount[rword];
84
+ djlist[rword*nlinks + slot] = i;
85
+ djloco[rword*nlinks + slot] = lword;
86
+ djcount[rword] ++;
87
+
88
+ #ifdef DEBUG
89
+ printf("Link: %d is %s--%s--%s\n", i,
90
+ sent->word[lword].string, pi->link_array[i].name,
91
+ sent->word[rword].string);
92
+ #endif
93
+ }
94
+
95
+ /* Process each word in the sentence (skipping LEFT-WALL, which is
96
+ * word 0. */
97
+ for (w=1; w<nwords; w++)
98
+ {
99
+ /* Sort the disjuncts for this word. -- bubble sort */
100
+ int slot = djcount[w];
101
+ for (i=0; i<slot; i++)
102
+ {
103
+ int j;
104
+ for (j=i+1; j<slot; j++)
105
+ {
106
+ if (djloco[w*nlinks + i] > djloco[w*nlinks + j])
107
+ {
108
+ int tmp = djloco[w*nlinks + i];
109
+ djloco[w*nlinks + i] = djloco[w*nlinks + j];
110
+ djloco[w*nlinks + j] = tmp;
111
+ tmp = djlist[w*nlinks + i];
112
+ djlist[w*nlinks + i] = djlist[w*nlinks + j];
113
+ djlist[w*nlinks + j] = tmp;
114
+ }
115
+ }
116
+ }
117
+
118
+ /* Create the disjunct string */
119
+ left = sizeof(djstr);
120
+ copied = 0;
121
+ for (i=0; i<slot; i++)
122
+ {
123
+ int dj = djlist[w*nlinks + i];
124
+ copied += lg_strlcpy(djstr+copied, pi->link_array[dj].name, left);
125
+ left = sizeof(djstr) - copied;
126
+ if (djloco[w*nlinks + i] < w)
127
+ copied += lg_strlcpy(djstr+copied, "-", left--);
128
+ else
129
+ copied += lg_strlcpy(djstr+copied, "+", left--);
130
+ copied += lg_strlcpy(djstr+copied, " ", left--);
131
+ }
132
+
133
+ lifo->disjunct_list_str[w] = strdup(djstr);
134
+ }
135
+
136
+ free (djcount);
137
+ }
138
+