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,487 @@
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
+ /* stuff for transforming a dictionary entry into a disjunct list */
15
+
16
+ #include <math.h>
17
+ #include "api.h"
18
+ #include "disjunct-utils.h"
19
+ #include "utilities.h" /* For Win32 compatibility features */
20
+
21
+ /* Temporary connectors used while converting expressions into disjunct lists */
22
+ typedef struct Tconnector_struct Tconnector;
23
+ struct Tconnector_struct
24
+ {
25
+ char multi; /* TRUE if this is a multi-connector */
26
+ char dir; /* '-' for left and '+' for right */
27
+ Tconnector * next;
28
+ const char * string;
29
+ };
30
+
31
+ typedef struct clause_struct Clause;
32
+ struct clause_struct
33
+ {
34
+ Clause * next;
35
+ float cost;
36
+ float maxcost;
37
+ Tconnector * c;
38
+ };
39
+
40
+ static void free_Tconnectors(Tconnector *e)
41
+ {
42
+ Tconnector * n;
43
+ for(;e != NULL; e=n)
44
+ {
45
+ n = e->next;
46
+ xfree((char *)e, sizeof(Tconnector));
47
+ }
48
+ }
49
+
50
+ static void free_clause_list(Clause *c)
51
+ {
52
+ Clause *c1;
53
+ while (c != NULL)
54
+ {
55
+ c1 = c->next;
56
+ free_Tconnectors(c->c);
57
+ xfree((char *)c, sizeof(Clause));
58
+ c = c1;
59
+ }
60
+ }
61
+
62
+ #ifdef UNUSED_FUNCTION
63
+ /**
64
+ * This builds a new copy of the connector list pointed to by c.
65
+ * Strings, as usual, are not copied.
66
+ */
67
+ static Tconnector * copy_Tconnectors(Tconnector * c)
68
+ {
69
+ Tconnector *c1;
70
+ if (c == NULL) return NULL;
71
+ c1 = (Tconnector *) xalloc(sizeof(Tconnector));
72
+ *c1 = *c;
73
+ c1->next = copy_Tconnectors(c->next);
74
+ return c1;
75
+ }
76
+
77
+ /**
78
+ * This builds a new copy of the clause pointed to by d (except for the
79
+ * next field which is set to NULL). Strings, as usual, are not copied.
80
+ */
81
+ static Clause * copy_clause(Clause * d)
82
+ {
83
+ Clause * d1;
84
+ if (d == NULL) return NULL;
85
+ d1 = (Clause *) xalloc(sizeof(Clause));
86
+ *d1 = *d;
87
+ d1->next = NULL;
88
+ d1->c = copy_Tconnectors(d->c);
89
+ return d1;
90
+ }
91
+ #endif /* UNUSED_FUNCTION */
92
+
93
+ /**
94
+ * reverse the order of the list e. destructive
95
+ */
96
+ static Tconnector * Treverse(Tconnector *e)
97
+ {
98
+ Tconnector * head, *x;
99
+ head = NULL;
100
+ while (e != NULL) {
101
+ x = e->next;
102
+ e->next = head;
103
+ head = e;
104
+ e = x;
105
+ }
106
+ return head;
107
+ }
108
+
109
+ /**
110
+ * reverse the order of the list e. destructive
111
+ */
112
+ static Connector * reverse(Connector *e)
113
+ {
114
+ Connector * head, *x;
115
+ head = NULL;
116
+ while (e != NULL) {
117
+ x = e->next;
118
+ e->next = head;
119
+ head = e;
120
+ e = x;
121
+ }
122
+ return head;
123
+ }
124
+
125
+ /**
126
+ * Builds a new list of connectors that is the catenation of e1 with e2.
127
+ * does not effect lists e1 or e2. Order is maintained.
128
+ */
129
+ static Tconnector * catenate(Tconnector * e1, Tconnector * e2)
130
+ {
131
+ Tconnector * e, * head;
132
+ head = NULL;
133
+ for (;e1 != NULL; e1 = e1->next) {
134
+ e = (Tconnector *) xalloc(sizeof(Tconnector));
135
+ *e = *e1;
136
+ e->next = head;
137
+ head = e;
138
+ }
139
+ for (;e2 != NULL; e2 = e2->next) {
140
+ e = (Tconnector *) xalloc(sizeof(Tconnector));
141
+ *e = *e2;
142
+ e->next = head;
143
+ head = e;
144
+ }
145
+ return Treverse(head);
146
+ }
147
+
148
+ /**
149
+ * build the connector for the terminal node n
150
+ */
151
+ static Tconnector * build_terminal(Exp * e)
152
+ {
153
+ Tconnector * c;
154
+ c = (Tconnector *) xalloc(sizeof(Tconnector));
155
+ c->string = e->u.string;
156
+ c->multi = e->multi;
157
+ c->dir = e->dir;
158
+ c->next = NULL;
159
+ return c;
160
+ }
161
+
162
+ #ifdef UNUSED_FUNCTION
163
+ static xxxfloat-int maxcost_of_expression(Exp *e)
164
+ {
165
+ E_list * e_list;
166
+ int m, m1;
167
+
168
+ m = 0;
169
+
170
+ if ((e->type == AND_type) || (e->type == OR_type)) {
171
+ for (e_list = e->u.l; e_list != NULL; e_list = e_list->next) {
172
+ m1 = maxcost_of_expression(e_list->e);
173
+ m = MAX(m, m1);
174
+ }
175
+ }
176
+ return (m + e->cost);
177
+ }
178
+
179
+ /**
180
+ * This returns the maximum maxcost of any disjunct in the sentence
181
+ * Assumes the sentence expressions have been constructed
182
+ */
183
+ static xxx-float-int maxcost_of_sentence(Sentence sent)
184
+ {
185
+ X_node * x;
186
+ int w, m, m1;
187
+ m = 0;
188
+
189
+ for (w = 0; w < sent->length; w++)
190
+ {
191
+ for (x = sent->word[w].x; x != NULL; x = x->next)
192
+ {
193
+ m1 = maxcost_of_expression(x->exp),
194
+ m = MAX(m, m1);
195
+ }
196
+ }
197
+ return m;
198
+ }
199
+ #endif /* UNUSED_FUNCTION */
200
+
201
+
202
+ /**
203
+ * Build the clause for the expression e. Does not change e
204
+ */
205
+ static Clause * build_clause(Exp *e)
206
+ {
207
+ Clause *c = NULL, *c1, *c2, *c3, *c4, *c_head;
208
+ E_list * e_list;
209
+
210
+ assert(e != NULL, "build_clause called with null parameter");
211
+ if (e->type == AND_type)
212
+ {
213
+ c1 = (Clause *) xalloc(sizeof (Clause));
214
+ c1->c = NULL;
215
+ c1->next = NULL;
216
+ c1->cost = 0.0f;
217
+ c1->maxcost = 0.0f ;
218
+ for (e_list = e->u.l; e_list != NULL; e_list = e_list->next)
219
+ {
220
+ c2 = build_clause(e_list->e);
221
+ c_head = NULL;
222
+ for (c3 = c1; c3 != NULL; c3 = c3->next)
223
+ {
224
+ for (c4 = c2; c4 != NULL; c4 = c4->next)
225
+ {
226
+ c = (Clause *) xalloc(sizeof (Clause));
227
+ c->cost = c3->cost + c4->cost;
228
+ c->maxcost = fmaxf(c3->maxcost,c4->maxcost);
229
+ c->c = catenate(c3->c, c4->c);
230
+ c->next = c_head;
231
+ c_head = c;
232
+ }
233
+ }
234
+ free_clause_list(c1);
235
+ free_clause_list(c2);
236
+ c1 = c_head;
237
+ }
238
+ c = c1;
239
+ }
240
+ else if (e->type == OR_type)
241
+ {
242
+ /* we'll catenate the lists of clauses */
243
+ c = NULL;
244
+ for (e_list = e->u.l; e_list != NULL; e_list = e_list->next)
245
+ {
246
+ c1 = build_clause(e_list->e);
247
+ while(c1 != NULL) {
248
+ c3 = c1->next;
249
+ c1->next = c;
250
+ c = c1;
251
+ c1 = c3;
252
+ }
253
+ }
254
+ }
255
+ else if (e->type == CONNECTOR_type)
256
+ {
257
+ c = (Clause *) xalloc(sizeof(Clause));
258
+ c->c = build_terminal(e);
259
+ c->cost = 0.0f;
260
+ c->maxcost = 0.0f;
261
+ c->next = NULL;
262
+ }
263
+ else
264
+ {
265
+ assert(FALSE, "an expression node with no type");
266
+ }
267
+
268
+ /* c now points to the list of clauses */
269
+ for (c1 = c; c1 != NULL; c1 = c1->next)
270
+ {
271
+ c1->cost += e->cost;
272
+ /* c1->maxcost = MAX(c1->maxcost,e->cost); */
273
+ /* Above is how Dennis had it. Someone changed it to below.
274
+ * However, this can sometimes lead to a maxcost that is less
275
+ * than the cost ! -- which seems wrong to me ... seems Dennis
276
+ * had it right!?
277
+ */
278
+ c1->maxcost += e->cost;
279
+ }
280
+ return c;
281
+ }
282
+
283
+ /* #define DEBUG */
284
+ #ifdef DEBUG
285
+ /* Misc printing functions, useful for debugging */
286
+
287
+ static void print_Tconnector_list(Tconnector * e)
288
+ {
289
+ for (;e != NULL; e=e->next) {
290
+ if (e->multi) printf("@");
291
+ printf("%s",e->string);
292
+ printf("%c", e->dir);
293
+ if (e->next != NULL) printf(" ");
294
+ }
295
+ }
296
+
297
+ static void print_clause_list(Clause * c)
298
+ {
299
+ for (;c != NULL; c=c->next) {
300
+ printf(" Clause: ");
301
+ printf("(%4.2f, %4.2f) ", c->cost, c->maxcost);
302
+ print_Tconnector_list(c->c);
303
+ printf("\n");
304
+ }
305
+ }
306
+
307
+ static void print_connector_list(Connector * e)
308
+ {
309
+ for (;e != NULL; e=e->next)
310
+ {
311
+ printf("%s",e->string);
312
+ if (e->label != NORMAL_LABEL) {
313
+ printf("%3d", e->label);
314
+ } else {
315
+ printf(" ");
316
+ }
317
+ if (e->next != NULL) printf(" ");
318
+ }
319
+ }
320
+
321
+ static void print_disjunct_list(Disjunct * c)
322
+ {
323
+ for (;c != NULL; c=c->next) {
324
+ printf("%10s: ", c->string);
325
+ printf("(%f) ", c->cost);
326
+ print_connector_list(c->left);
327
+ printf(" <--> ");
328
+ print_connector_list(c->right);
329
+ printf("\n");
330
+ }
331
+ }
332
+ #endif /* DEBUG */
333
+
334
+ /**
335
+ * Build a new list of connectors starting from the Tconnectors
336
+ * in the list pointed to by e. Keep only those whose strings whose
337
+ * direction has the value c.
338
+ */
339
+ static Connector * extract_connectors(Tconnector *e, int c)
340
+ {
341
+ Connector *e1;
342
+ if (e == NULL) return NULL;
343
+ if (e->dir == c)
344
+ {
345
+ e1 = connector_new();
346
+ e1->next = extract_connectors(e->next,c);
347
+ e1->multi = e->multi;
348
+ e1->string = e->string;
349
+ e1->word = 0;
350
+ return e1;
351
+ }
352
+ else
353
+ {
354
+ return extract_connectors(e->next,c);
355
+ }
356
+ }
357
+
358
+ /**
359
+ * Build a disjunct list out of the clause list c.
360
+ * string is the print name of word that generated this disjunct.
361
+ */
362
+ static Disjunct *
363
+ build_disjunct(Clause * cl, const char * string, float cost_cutoff)
364
+ {
365
+ Disjunct *dis, *ndis;
366
+ dis = NULL;
367
+ for (; cl != NULL; cl = cl->next)
368
+ {
369
+ if (cl->maxcost <= cost_cutoff)
370
+ {
371
+ ndis = (Disjunct *) xalloc(sizeof(Disjunct));
372
+ ndis->left = reverse(extract_connectors(cl->c, '-'));
373
+ ndis->right = reverse(extract_connectors(cl->c, '+'));
374
+ ndis->string = string;
375
+ ndis->cost = cl->cost;
376
+ ndis->next = dis;
377
+ dis = ndis;
378
+ }
379
+ }
380
+ return dis;
381
+ }
382
+
383
+ Disjunct * build_disjuncts_for_X_node(X_node * x, float cost_cutoff)
384
+ {
385
+ Clause *c ;
386
+ Disjunct * dis;
387
+ /* print_expression(x->exp); printf("\n"); */
388
+ c = build_clause(x->exp);
389
+ /* print_clause_list(c); */
390
+ dis = build_disjunct(c, x->string, cost_cutoff);
391
+ /* print_disjunct_list(dis); */
392
+ free_clause_list(c);
393
+ return dis;
394
+ }
395
+
396
+ #if DEBUG
397
+ /* There is a much better print_expression elsewhere
398
+ * This one is for low-level debug. */
399
+ void prt_exp(Exp *e, int i)
400
+ {
401
+ if (e == NULL) return;
402
+
403
+ for(int j =0; j<i; j++) printf(" ");
404
+ printf ("type=%d dir=%c multi=%d cost=%f\n", e->type, e->dir, e->multi, e->cost);
405
+ if (e->type != CONNECTOR_type)
406
+ {
407
+ E_list *l = e->u.l;
408
+ while(l)
409
+ {
410
+ prt_exp(l->e, i+2);
411
+ l = l->next;
412
+ }
413
+ }
414
+ else
415
+ {
416
+ for(int j =0; j<i; j++) printf(" ");
417
+ printf("con=%s\n", e->u.string);
418
+ }
419
+ }
420
+ #endif
421
+
422
+ /**
423
+ * Build a list of disjuncts.
424
+ *
425
+ * This is mostly used only for counting the number of disjuncts
426
+ * (but is otherwise "almost" obsolete ??)
427
+ */
428
+ Disjunct * build_disjuncts_for_dict_node(Dict_node *dn)
429
+ {
430
+ Disjunct *dj;
431
+ X_node x;
432
+ x.exp = dn->exp;
433
+ x.string = dn->string;
434
+ dj = build_disjuncts_for_X_node(&x, MAX_CONNECTOR_COST);
435
+ /* print_disjunct_list(dj); */
436
+ return dj;
437
+ }
438
+
439
+ /**
440
+ * build_word_expressions() -- build list of expressions for a word
441
+ *
442
+ * Looks up the word s in the dictionary. Returns NULL if it's not there.
443
+ * If there, it builds the list of expressions for the word, and returns
444
+ * a pointer to it.
445
+ */
446
+ X_node * build_word_expressions(Dictionary dict, const char * s)
447
+ {
448
+ Dict_node * dn, *dn_head;
449
+ X_node * x, * y;
450
+
451
+ dn_head = dictionary_lookup_list(dict, s);
452
+ dn = dn_head;
453
+
454
+ x = NULL;
455
+ while (dn != NULL)
456
+ {
457
+ y = (X_node *) xalloc(sizeof(X_node));
458
+ y->next = x;
459
+ x = y;
460
+ x->exp = copy_Exp(dn->exp);
461
+ x->string = dn->string;
462
+ dn = dn->right;
463
+ }
464
+ free_lookup_list (dn_head);
465
+ return x;
466
+ }
467
+
468
+ /**
469
+ * Turn sentence expressions into disjuncts.
470
+ * Sentence expressions must have been built, before calling this routine.
471
+ */
472
+ void build_sentence_disjuncts(Sentence sent, float cost_cutoff)
473
+ {
474
+ Disjunct * d;
475
+ X_node * x;
476
+ int w;
477
+ for (w = 0; w < sent->length; w++)
478
+ {
479
+ d = NULL;
480
+ for (x = sent->word[w].x; x != NULL; x = x->next)
481
+ {
482
+ Disjunct *dx = build_disjuncts_for_X_node(x, cost_cutoff);
483
+ d = catenate_disjuncts(dx, d);
484
+ }
485
+ sent->word[w].d = d;
486
+ }
487
+ }