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,139 @@
1
+ /*
2
+ * BinReloc - a library for creating relocatable executables
3
+ * Written by: Mike Hearn <mike@theoretic.com>
4
+ * Hongli Lai <h.lai@chello.nl>
5
+ * http://autopackage.org/
6
+ *
7
+ * This source code is public domain. You can relicense this code
8
+ * under whatever license you want.
9
+ *
10
+ * See http://autopackage.org/docs/binreloc/ for
11
+ * more information and how to use this.
12
+ *
13
+ * NOTE: if you're using C++ and are getting "undefined reference
14
+ * to br_*", try renaming prefix.c to prefix.cpp
15
+ */
16
+
17
+ #ifndef _PREFIX_H_
18
+ #define _PREFIX_H_
19
+
20
+ #ifdef __cplusplus
21
+ extern "C" {
22
+ #endif /* __cplusplus */
23
+
24
+ /* WARNING, BEFORE YOU MODIFY PREFIX.C:
25
+ *
26
+ * If you make changes to any of the functions in prefix.c, you MUST
27
+ * change the BR_NAMESPACE macro.
28
+ * This way you can avoid symbol table conflicts with other libraries
29
+ * that also happen to use BinReloc.
30
+ *
31
+ * Example:
32
+ * #define BR_NAMESPACE(funcName) foobar_ ## funcName
33
+ * --> expands br_locate to foobar_br_locate
34
+ */
35
+ #undef BR_NAMESPACE
36
+ #define BR_NAMESPACE(funcName) funcName
37
+
38
+
39
+ #ifdef ENABLE_BINRELOC
40
+
41
+ #define br_thread_local_store BR_NAMESPACE(br_thread_local_store)
42
+ #define br_locate BR_NAMESPACE(br_locate)
43
+ #define br_locate_prefix BR_NAMESPACE(br_locate_prefix)
44
+ #define br_prepend_prefix BR_NAMESPACE(br_prepend_prefix)
45
+
46
+ #ifndef BR_NO_MACROS
47
+ /* These are convience macros that replace the ones usually used
48
+ in Autoconf/Automake projects */
49
+ #undef SELFPATH
50
+ #undef PREFIX
51
+ #undef PREFIXDIR
52
+ #undef BINDIR
53
+ #undef SBINDIR
54
+ #undef DATADIR
55
+ #undef LIBDIR
56
+ #undef LIBEXECDIR
57
+ #undef ETCDIR
58
+ #undef SYSCONFDIR
59
+ #undef CONFDIR
60
+ #undef LOCALEDIR
61
+
62
+ #define SELFPATH (br_thread_local_store (br_locate ((void *) "")))
63
+ #define PREFIX (br_thread_local_store (br_locate_prefix ((void *) "")))
64
+ #define PREFIXDIR (br_thread_local_store (br_locate_prefix ((void *) "")))
65
+ #define BINDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/bin")))
66
+ #define SBINDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/sbin")))
67
+ #define DATADIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/share")))
68
+ #define LIBDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/lib")))
69
+ #define LIBEXECDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/libexec")))
70
+ #define ETCDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
71
+ #define SYSCONFDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
72
+ #define CONFDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
73
+ #define LOCALEDIR (br_thread_local_store (br_prepend_prefix ((void *) "", "/share/locale")))
74
+ #endif /* BR_NO_MACROS */
75
+
76
+
77
+ /* The following functions are used internally by BinReloc
78
+ and shouldn't be used directly in applications. */
79
+
80
+ char *br_locate (void *symbol);
81
+ char *br_locate_prefix (void *symbol);
82
+ char *br_prepend_prefix (void *symbol, char *path);
83
+
84
+ #endif /* ENABLE_BINRELOC */
85
+
86
+ const char *br_thread_local_store (char *str);
87
+
88
+
89
+ /* These macros and functions are not guarded by the ENABLE_BINRELOC
90
+ * macro because they are portable. You can use these functions.
91
+ */
92
+
93
+ #define br_strcat BR_NAMESPACE(br_strcat)
94
+ #define br_extract_dir BR_NAMESPACE(br_extract_dir)
95
+ #define br_extract_prefix BR_NAMESPACE(br_extract_prefix)
96
+ #define br_set_locate_fallback_func BR_NAMESPACE(br_set_locate_fallback_func)
97
+
98
+ #ifndef BR_NO_MACROS
99
+ #ifndef ENABLE_BINRELOC
100
+ #define BR_SELFPATH(suffix) SELFPATH suffix
101
+ #define BR_PREFIX(suffix) PREFIX suffix
102
+ #define BR_PREFIXDIR(suffix) BR_PREFIX suffix
103
+ #define BR_BINDIR(suffix) BINDIR suffix
104
+ #define BR_SBINDIR(suffix) SBINDIR suffix
105
+ #define BR_DATADIR(suffix) DATADIR suffix
106
+ #define BR_LIBDIR(suffix) LIBDIR suffix
107
+ #define BR_LIBEXECDIR(suffix) LIBEXECDIR suffix
108
+ #define BR_ETCDIR(suffix) ETCDIR suffix
109
+ #define BR_SYSCONFDIR(suffix) SYSCONFDIR suffix
110
+ #define BR_CONFDIR(suffix) CONFDIR suffix
111
+ #define BR_LOCALEDIR(suffix) LOCALEDIR suffix
112
+ #else
113
+ #define BR_SELFPATH(suffix) (br_thread_local_store (br_strcat (SELFPATH, suffix)))
114
+ #define BR_PREFIX(suffix) (br_thread_local_store (br_strcat (PREFIX, suffix)))
115
+ #define BR_PREFIXDIR(suffix) (br_thread_local_store (br_strcat (BR_PREFIX, suffix)))
116
+ #define BR_BINDIR(suffix) (br_thread_local_store (br_strcat (BINDIR, suffix)))
117
+ #define BR_SBINDIR(suffix) (br_thread_local_store (br_strcat (SBINDIR, suffix)))
118
+ #define BR_DATADIR(suffix) (br_thread_local_store (br_strcat (DATADIR, suffix)))
119
+ #define BR_LIBDIR(suffix) (br_thread_local_store (br_strcat (LIBDIR, suffix)))
120
+ #define BR_LIBEXECDIR(suffix) (br_thread_local_store (br_strcat (LIBEXECDIR, suffix)))
121
+ #define BR_ETCDIR(suffix) (br_thread_local_store (br_strcat (ETCDIR, suffix)))
122
+ #define BR_SYSCONFDIR(suffix) (br_thread_local_store (br_strcat (SYSCONFDIR, suffix)))
123
+ #define BR_CONFDIR(suffix) (br_thread_local_store (br_strcat (CONFDIR, suffix)))
124
+ #define BR_LOCALEDIR(suffix) (br_thread_local_store (br_strcat (LOCALEDIR, suffix)))
125
+ #endif
126
+ #endif
127
+
128
+ char *br_strcat (const char *str1, const char *str2);
129
+ char *br_extract_dir (const char *path);
130
+ char *br_extract_prefix(const char *path);
131
+ typedef char *(*br_locate_fallback_func) (void *symbol, void *data);
132
+ void br_set_locate_fallback_func (br_locate_fallback_func func, void *data);
133
+
134
+
135
+ #ifdef __cplusplus
136
+ }
137
+ #endif /* __cplusplus */
138
+
139
+ #endif /* _PREFIX_H_ */
@@ -0,0 +1,412 @@
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 "api.h"
15
+ #include "disjunct-utils.h"
16
+
17
+ void free_deletable(Sentence sent)
18
+ {
19
+ int w;
20
+ if (sent->dptr != NULL)
21
+ {
22
+ for (w = 0; w <= sent->length; w++)
23
+ {
24
+ xfree((char *)sent->dptr[w], sizeof(char) * (sent->length + 1));
25
+ }
26
+ xfree((char *) sent->dptr, (sent->length + 1)*sizeof(char *));
27
+ sent->dptr = NULL;
28
+ sent->deletable = NULL;
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Returns true if the range lw...rw inclusive contains a conjunction
34
+ */
35
+ static int conj_in_range(Sentence sent, int lw, int rw)
36
+ {
37
+ for (;lw < rw+1; lw++) {
38
+ if (sent->is_conjunction[lw]) return TRUE;
39
+ }
40
+ return FALSE;
41
+ }
42
+
43
+ /**
44
+ * Initialize the array deletable[i][j] to indicate if the words
45
+ * i+1...j-1 could be non existant in one of the multiple linkages. This
46
+ * array is used in conjunction_prune and power_prune. Regions of length
47
+ * 0 are always deletable. A region of length two with a conjunction at
48
+ * one end is always deletable. Another observation is that for the
49
+ * comma to form the right end of a deletable region, it must be the case
50
+ * that there is a conjunction to the right of the comma. Also, when
51
+ * considering deletable regions with a comma on their left sides, there
52
+ * must be a conjunction inside the region to be deleted. Finally, the
53
+ * words "either", "neither", "both", "not" and "not only" are all
54
+ * deletable.
55
+ */
56
+ void build_deletable(Sentence sent, int has_conjunction)
57
+ {
58
+ int i,j,k;
59
+
60
+ free_deletable(sent);
61
+
62
+ sent->dptr = (char **) xalloc((sent->length + 1) * sizeof(char *));
63
+ sent->deletable = sent->dptr + 1; /* we need to be able to access the [-1] position in this array */
64
+
65
+ for (i = -1; i<sent->length; i++)
66
+ {
67
+ sent->deletable[i] = (char *) xalloc((sent->length+1) * sizeof(char));
68
+ /* the +1 is to allow us to have the info for the last word
69
+ read the comment above */
70
+ for (j=0; j<= sent->length; j++)
71
+ {
72
+ if (j == i+1)
73
+ {
74
+ sent->deletable[i][j] = TRUE;
75
+ }
76
+ else if (sent->null_links)
77
+ {
78
+ sent->deletable[i][j] = TRUE;
79
+ }
80
+ else if (!has_conjunction)
81
+ {
82
+ sent->deletable[i][j] = FALSE;
83
+ }
84
+ else if ((j > i + 2) && (sent->is_conjunction[i+1] ||
85
+ sent->is_conjunction[j-1] ||
86
+ (strcmp(",", sent->word[i+1].string) == 0 &&
87
+ conj_in_range(sent, i+2, j-1)) ||
88
+ (strcmp(",",sent->word[j-1].string) == 0 &&
89
+ conj_in_range(sent, j, sent->length - 1))))
90
+ {
91
+ sent->deletable[i][j] = TRUE;
92
+ }
93
+ else if (j > i)
94
+ {
95
+ for (k=i+1; k<j; k++)
96
+ {
97
+ if ((strcmp("either", sent->word[k].string) == 0) ||
98
+ (strcmp("neither", sent->word[k].string) == 0) ||
99
+ (strcmp("both", sent->word[k].string) == 0) ||
100
+ (strcmp("not", sent->word[k].string) == 0)) continue;
101
+ if ((strcmp("only", sent->word[k].string)==0) && (k > i+1) &&
102
+ (strcmp("not", sent->word[k-1].string)==0)) continue;
103
+ break;
104
+ }
105
+ sent->deletable[i][j] = (k == j);
106
+ }
107
+ else
108
+ {
109
+ sent->deletable[i][j] = FALSE;
110
+ }
111
+ }
112
+ }
113
+ }
114
+
115
+ void free_effective_dist(Sentence sent)
116
+ {
117
+ int w;
118
+ if (sent->effective_dist != NULL) {
119
+ for (w=0; w<sent->length; w++) {
120
+ xfree((char *)sent->effective_dist[w],sizeof(char)*(sent->length+1));
121
+ }
122
+ xfree((char *) sent->effective_dist, sizeof(char *)*(sent->length));
123
+ sent->effective_dist = NULL;
124
+ }
125
+ }
126
+
127
+ /**
128
+ * The "effective distance" between two words is the actual distance minus
129
+ * the largest deletable region strictly between the two words. If the
130
+ * effective distance between two words is greater than a connector's max
131
+ * link length, then that connector cannot be satisfied by linking these
132
+ * two words.
133
+ *
134
+ * [Note: The effective distance is not monotically increasing as you move
135
+ * away from a word.]
136
+ *
137
+ * This function creates effective_dist[][]. It assumes that deleteble[][]
138
+ * has already been computed.
139
+ *
140
+ * Dynamic programming is used to compute this. The order used is smallest
141
+ * region to largest.
142
+ *
143
+ * Just as deletable[i][j] is constructed for j=N_words (which is one
144
+ * off the end of the sentence) we do that for effective_dist[][].
145
+ */
146
+ void build_effective_dist(Sentence sent, int has_conjunction)
147
+ {
148
+ int i, j, diff;
149
+
150
+ free_effective_dist(sent);
151
+ sent->effective_dist = (char **) xalloc((sent->length)*sizeof(char *));
152
+
153
+ for (i=0; i<sent->length; i++) {
154
+ sent->effective_dist[i] = (char *) xalloc(sent->length+1);
155
+ }
156
+ for (i=0; i<sent->length; i++) {
157
+ /* Fill in the silly part */
158
+ for (j=0; j<=i; j++) {
159
+ sent->effective_dist[i][j] = j-i;
160
+ }
161
+ }
162
+
163
+ /* what is the rationale for ignoring the effective_dist
164
+ if null links are allowed? */
165
+ if (sent->null_links) {
166
+ for (i=0; i<sent->length; i++) {
167
+ for (j=0; j<=sent->length; j++) {
168
+ sent->effective_dist[i][j] = j-i;
169
+ }
170
+ }
171
+ }
172
+ else {
173
+ for (diff = 1; diff < sent->length; diff++) {
174
+ for (i=0; i+diff <= sent->length; i++) {
175
+ j = i+diff;
176
+ if (sent->deletable[i][j]) { /* note that deletable[x][x+1] is TRUE */
177
+ sent->effective_dist[i][j] = 1;
178
+ } else {
179
+ sent->effective_dist[i][j] = 1 + MIN(sent->effective_dist[i][j-1],sent->effective_dist[i+1][j]);
180
+ }
181
+ }
182
+ }
183
+
184
+ /* now when you link to a conjunction, your effective length is 1 */
185
+
186
+ for (i=0; i<sent->length; i++) {
187
+ for (j=i+1; j<sent->length; j++) {
188
+ if (sent->is_conjunction[i] ||
189
+ sent->is_conjunction[j]) sent->effective_dist[i][j] = 1;
190
+ }
191
+ }
192
+ }
193
+
194
+ /* sent->effective_dist[i][i] should be 0 */
195
+
196
+ /*
197
+ for (j=0; j<=sent->length; j++) {
198
+ printf("%4d", j);
199
+ }
200
+ printf("\n");
201
+ for (i=0; i<sent->length; i++) {
202
+ for (j=0; j<=sent->length; j++) {
203
+ printf("%4d", sent->effective_dist[i][j]);
204
+ }
205
+ printf("\n");
206
+ }
207
+ */
208
+ }
209
+
210
+ /**
211
+ * Installs all the special fat disjuncts on all of the words of the
212
+ * sentence
213
+ */
214
+ void install_fat_connectors(Sentence sent)
215
+ {
216
+ int i;
217
+ for (i=0; i<sent->length; i++) {
218
+ if (sent->is_conjunction[i]) {
219
+ sent->word[i].d = catenate_disjuncts(sent->word[i].d,
220
+ build_AND_disjunct_list(sent, sent->word[i].string));
221
+ } else {
222
+ sent->word[i].d = catenate_disjuncts(sent->word[i].d,
223
+ explode_disjunct_list(sent, sent->word[i].d));
224
+ if (strcmp(sent->word[i].string, ",") == 0) {
225
+ sent->word[i].d = catenate_disjuncts(sent->word[i].d,
226
+ build_COMMA_disjunct_list(sent));
227
+ }
228
+ }
229
+ }
230
+ }
231
+
232
+ static void
233
+ set_connector_list_length_limit(Sentence sent,
234
+ Connector *c,
235
+ Connector_set *conset,
236
+ int short_len,
237
+ Parse_Options opts)
238
+ {
239
+ for (; c!=NULL; c=c->next) {
240
+ if (parse_options_get_all_short_connectors(opts)) {
241
+ c->length_limit = short_len;
242
+ }
243
+ else if (conset == NULL || match_in_connector_set(sent, conset, c, '+')) {
244
+ c->length_limit = UNLIMITED_LEN;
245
+ } else {
246
+ c->length_limit = short_len;
247
+ }
248
+ }
249
+ }
250
+
251
+ static void set_connector_length_limits(Sentence sent, Parse_Options opts)
252
+ {
253
+ int i;
254
+ int len;
255
+ Disjunct *d;
256
+
257
+ len = opts->short_length;
258
+ if (len > UNLIMITED_LEN) len = UNLIMITED_LEN;
259
+
260
+ for (i=0; i<sent->length; i++) {
261
+ for (d = sent->word[i].d; d != NULL; d = d->next) {
262
+ set_connector_list_length_limit(sent, d->left, sent->dict->unlimited_connector_set, len, opts);
263
+ set_connector_list_length_limit(sent, d->right, sent->dict->unlimited_connector_set, len, opts);
264
+ }
265
+ }
266
+ }
267
+
268
+ void free_sentence_expressions(Sentence sent)
269
+ {
270
+ int i;
271
+ for (i=0; i<sent->length; i++) {
272
+ free_X_nodes(sent->word[i].x);
273
+ }
274
+ }
275
+
276
+
277
+ /**
278
+ * Return true if the sentence contains a conjunction. Assumes
279
+ * is_conjunction[] has been initialized.
280
+ *
281
+ * This routine has been added to the public API as of version 4.7.0,
282
+ * as it is required to determine whether a fat linkage might restult
283
+ * during parsing. This is needed to optimize the optioanl use of fat
284
+ * links. The goal is to eventually deprecate fat linkages entirely;
285
+ * this routine is needed in the transition phase.
286
+ */
287
+ int sentence_contains_conjunction(Sentence sent)
288
+ {
289
+ int w;
290
+ if (NULL == sent->is_conjunction) return FALSE;
291
+
292
+ for (w=0; w<sent->length; w++) {
293
+ if (sent->is_conjunction[w]) return TRUE;
294
+ }
295
+ return FALSE;
296
+ }
297
+
298
+ void free_sentence_disjuncts(Sentence sent)
299
+ {
300
+ int i;
301
+
302
+ for (i=0; i<sent->length; ++i) {
303
+ free_disjuncts(sent->word[i].d);
304
+ sent->word[i].d = NULL;
305
+ }
306
+ if (sentence_contains_conjunction(sent)) free_AND_tables(sent);
307
+ }
308
+
309
+
310
+ /**
311
+ * Assumes that the sentence expression lists have been generated.
312
+ * This does all the necessary pruning and building of fat-link structures.
313
+ */
314
+ void prepare_to_parse(Sentence sent, Parse_Options opts)
315
+ {
316
+ int i, has_conjunction;
317
+
318
+ build_sentence_disjuncts(sent, opts->disjunct_cost);
319
+ if (verbosity > 2) {
320
+ printf("After expanding expressions into disjuncts:");
321
+ print_disjunct_counts(sent);
322
+ }
323
+ print_time(opts, "Built disjuncts");
324
+
325
+ for (i=0; i<sent->length; i++) {
326
+ sent->word[i].d = eliminate_duplicate_disjuncts(sent->word[i].d);
327
+ }
328
+ print_time(opts, "Eliminated duplicate disjuncts");
329
+
330
+ if (verbosity > 2) {
331
+ printf("\nAfter expression pruning and duplicate elimination:\n");
332
+ print_disjunct_counts(sent);
333
+ }
334
+
335
+ sent->null_links = (opts->min_null_count > 0);
336
+
337
+ if (opts->use_fat_links)
338
+ {
339
+ has_conjunction = sentence_contains_conjunction(sent);
340
+ }
341
+ else
342
+ {
343
+ has_conjunction = FALSE;
344
+ }
345
+
346
+ /* The deletable region depends on whether null links are in use;
347
+ * with null_links everything is deletable. Thus, this processing
348
+ * cannot be done earlier than here.
349
+ */
350
+ set_connector_length_limits(sent, opts);
351
+ build_deletable(sent, has_conjunction);
352
+ build_effective_dist(sent, has_conjunction);
353
+ init_count(sent);
354
+
355
+ if (!has_conjunction) {
356
+ pp_and_power_prune(sent, RUTHLESS, opts);
357
+ } else {
358
+ pp_and_power_prune(sent, GENTLE, opts);
359
+ /*
360
+ if (verbosity > 2) {
361
+ printf("\nAfter Gentle power pruning:\n");
362
+ print_disjunct_counts(sent);
363
+ }
364
+ */
365
+ /* already reported -- print_time(opts, "Finished gentle power pruning"); */
366
+ conjunction_prune(sent, opts);
367
+ if (verbosity > 2) {
368
+ printf("\nAfter conjunction pruning:\n");
369
+ print_disjunct_counts(sent);
370
+ }
371
+ print_time(opts, "Done conjunction pruning");
372
+ build_conjunction_tables(sent);
373
+ install_fat_connectors(sent);
374
+ install_special_conjunctive_connectors(sent);
375
+ if (verbosity > 2) {
376
+ printf("After conjunctions, disjuncts counts:\n");
377
+ print_disjunct_counts(sent);
378
+ }
379
+ set_connector_length_limits(sent, opts);
380
+ /* have to do this again cause of the
381
+ * new fat connectors and disjuncts */
382
+
383
+ print_time(opts, "Constructed fat disjuncts");
384
+
385
+ prune(sent);
386
+ print_time(opts, "Pruned fat disjuncts");
387
+
388
+ for (i=0; i<sent->length; i++) {
389
+ sent->word[i].d = eliminate_duplicate_disjuncts(sent->word[i].d);
390
+ }
391
+ if (verbosity > 2) {
392
+ printf("After pruning and duplicate elimination:\n");
393
+ print_disjunct_counts(sent);
394
+ }
395
+ print_time(opts, "Eliminated duplicate disjuncts (again)");
396
+
397
+ if (verbosity > 2) print_AND_statistics(sent);
398
+
399
+ power_prune(sent, RUTHLESS, opts);
400
+ }
401
+ free_count(sent);
402
+
403
+ /*
404
+ if (verbosity > 2) {
405
+ printf("\nAfter RUTHLESS power-pruning:\n");
406
+ print_disjunct_counts(sent);
407
+ }
408
+ */
409
+ /* print time for power pruning used to be here */
410
+ /* now done in power_prune itself */
411
+ print_time(opts, "Initialized fast matcher and hash table");
412
+ }