grammar_cop 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }