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,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
+