grammar_cop 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.DS_Store +0 -0
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +8 -0
- data/data/.DS_Store +0 -0
- data/data/Makefile +511 -0
- data/data/Makefile.am +4 -0
- data/data/Makefile.in +511 -0
- data/data/de/.DS_Store +0 -0
- data/data/de/4.0.affix +7 -0
- data/data/de/4.0.dict +474 -0
- data/data/de/Makefile +387 -0
- data/data/de/Makefile.am +9 -0
- data/data/de/Makefile.in +387 -0
- data/data/en/.DS_Store +0 -0
- data/data/en/4.0.affix +26 -0
- data/data/en/4.0.batch +1002 -0
- data/data/en/4.0.biolg.batch +411 -0
- data/data/en/4.0.constituent-knowledge +127 -0
- data/data/en/4.0.dict +8759 -0
- data/data/en/4.0.dict.m4 +6928 -0
- data/data/en/4.0.enwiki.batch +14 -0
- data/data/en/4.0.fixes.batch +2776 -0
- data/data/en/4.0.knowledge +306 -0
- data/data/en/4.0.regex +225 -0
- data/data/en/4.0.voa.batch +114 -0
- data/data/en/Makefile +554 -0
- data/data/en/Makefile.am +19 -0
- data/data/en/Makefile.in +554 -0
- data/data/en/README +173 -0
- data/data/en/tiny.dict +157 -0
- data/data/en/words/.DS_Store +0 -0
- data/data/en/words/Makefile +456 -0
- data/data/en/words/Makefile.am +78 -0
- data/data/en/words/Makefile.in +456 -0
- data/data/en/words/currency +205 -0
- data/data/en/words/currency.p +28 -0
- data/data/en/words/entities.given-bisex.sing +39 -0
- data/data/en/words/entities.given-female.sing +4141 -0
- data/data/en/words/entities.given-male.sing +1633 -0
- data/data/en/words/entities.locations.sing +68 -0
- data/data/en/words/entities.national.sing +253 -0
- data/data/en/words/entities.organizations.sing +7 -0
- data/data/en/words/entities.us-states.sing +11 -0
- data/data/en/words/units.1 +45 -0
- data/data/en/words/units.1.dot +4 -0
- data/data/en/words/units.3 +2 -0
- data/data/en/words/units.4 +5 -0
- data/data/en/words/units.4.dot +1 -0
- data/data/en/words/words-medical.adv.1 +1191 -0
- data/data/en/words/words-medical.prep.1 +67 -0
- data/data/en/words/words-medical.v.4.1 +2835 -0
- data/data/en/words/words-medical.v.4.2 +2848 -0
- data/data/en/words/words-medical.v.4.3 +3011 -0
- data/data/en/words/words-medical.v.4.4 +3036 -0
- data/data/en/words/words-medical.v.4.5 +3050 -0
- data/data/en/words/words.adj.1 +6794 -0
- data/data/en/words/words.adj.2 +638 -0
- data/data/en/words/words.adj.3 +667 -0
- data/data/en/words/words.adv.1 +1573 -0
- data/data/en/words/words.adv.2 +67 -0
- data/data/en/words/words.adv.3 +157 -0
- data/data/en/words/words.adv.4 +80 -0
- data/data/en/words/words.n.1 +11464 -0
- data/data/en/words/words.n.1.wiki +264 -0
- data/data/en/words/words.n.2.s +2017 -0
- data/data/en/words/words.n.2.s.biolg +1 -0
- data/data/en/words/words.n.2.s.wiki +298 -0
- data/data/en/words/words.n.2.x +65 -0
- data/data/en/words/words.n.2.x.wiki +10 -0
- data/data/en/words/words.n.3 +5717 -0
- data/data/en/words/words.n.t +23 -0
- data/data/en/words/words.v.1.1 +1038 -0
- data/data/en/words/words.v.1.2 +1043 -0
- data/data/en/words/words.v.1.3 +1052 -0
- data/data/en/words/words.v.1.4 +1023 -0
- data/data/en/words/words.v.1.p +17 -0
- data/data/en/words/words.v.10.1 +14 -0
- data/data/en/words/words.v.10.2 +15 -0
- data/data/en/words/words.v.10.3 +88 -0
- data/data/en/words/words.v.10.4 +17 -0
- data/data/en/words/words.v.2.1 +1253 -0
- data/data/en/words/words.v.2.2 +1304 -0
- data/data/en/words/words.v.2.3 +1280 -0
- data/data/en/words/words.v.2.4 +1285 -0
- data/data/en/words/words.v.2.5 +1287 -0
- data/data/en/words/words.v.4.1 +2472 -0
- data/data/en/words/words.v.4.2 +2487 -0
- data/data/en/words/words.v.4.3 +2441 -0
- data/data/en/words/words.v.4.4 +2478 -0
- data/data/en/words/words.v.4.5 +2483 -0
- data/data/en/words/words.v.5.1 +98 -0
- data/data/en/words/words.v.5.2 +98 -0
- data/data/en/words/words.v.5.3 +103 -0
- data/data/en/words/words.v.5.4 +102 -0
- data/data/en/words/words.v.6.1 +388 -0
- data/data/en/words/words.v.6.2 +401 -0
- data/data/en/words/words.v.6.3 +397 -0
- data/data/en/words/words.v.6.4 +405 -0
- data/data/en/words/words.v.6.5 +401 -0
- data/data/en/words/words.v.8.1 +117 -0
- data/data/en/words/words.v.8.2 +118 -0
- data/data/en/words/words.v.8.3 +118 -0
- data/data/en/words/words.v.8.4 +119 -0
- data/data/en/words/words.v.8.5 +119 -0
- data/data/en/words/words.y +104 -0
- data/data/lt/.DS_Store +0 -0
- data/data/lt/4.0.affix +6 -0
- data/data/lt/4.0.constituent-knowledge +24 -0
- data/data/lt/4.0.dict +135 -0
- data/data/lt/4.0.knowledge +38 -0
- data/data/lt/Makefile +389 -0
- data/data/lt/Makefile.am +11 -0
- data/data/lt/Makefile.in +389 -0
- data/ext/.DS_Store +0 -0
- data/ext/link_grammar/.DS_Store +0 -0
- data/ext/link_grammar/extconf.rb +2 -0
- data/ext/link_grammar/link-grammar/.DS_Store +0 -0
- data/ext/link_grammar/link-grammar/.deps/analyze-linkage.Plo +198 -0
- data/ext/link_grammar/link-grammar/.deps/and.Plo +202 -0
- data/ext/link_grammar/link-grammar/.deps/api.Plo +244 -0
- data/ext/link_grammar/link-grammar/.deps/build-disjuncts.Plo +212 -0
- data/ext/link_grammar/link-grammar/.deps/command-line.Plo +201 -0
- data/ext/link_grammar/link-grammar/.deps/constituents.Plo +201 -0
- data/ext/link_grammar/link-grammar/.deps/count.Plo +202 -0
- data/ext/link_grammar/link-grammar/.deps/disjunct-utils.Plo +126 -0
- data/ext/link_grammar/link-grammar/.deps/disjuncts.Plo +123 -0
- data/ext/link_grammar/link-grammar/.deps/error.Plo +121 -0
- data/ext/link_grammar/link-grammar/.deps/expand.Plo +133 -0
- data/ext/link_grammar/link-grammar/.deps/extract-links.Plo +198 -0
- data/ext/link_grammar/link-grammar/.deps/fast-match.Plo +200 -0
- data/ext/link_grammar/link-grammar/.deps/idiom.Plo +200 -0
- data/ext/link_grammar/link-grammar/.deps/jni-client.Plo +217 -0
- data/ext/link_grammar/link-grammar/.deps/link-parser.Po +1 -0
- data/ext/link_grammar/link-grammar/.deps/massage.Plo +202 -0
- data/ext/link_grammar/link-grammar/.deps/post-process.Plo +202 -0
- data/ext/link_grammar/link-grammar/.deps/pp_knowledge.Plo +202 -0
- data/ext/link_grammar/link-grammar/.deps/pp_lexer.Plo +201 -0
- data/ext/link_grammar/link-grammar/.deps/pp_linkset.Plo +200 -0
- data/ext/link_grammar/link-grammar/.deps/prefix.Plo +102 -0
- data/ext/link_grammar/link-grammar/.deps/preparation.Plo +202 -0
- data/ext/link_grammar/link-grammar/.deps/print-util.Plo +200 -0
- data/ext/link_grammar/link-grammar/.deps/print.Plo +201 -0
- data/ext/link_grammar/link-grammar/.deps/prune.Plo +202 -0
- data/ext/link_grammar/link-grammar/.deps/read-dict.Plo +223 -0
- data/ext/link_grammar/link-grammar/.deps/read-regex.Plo +123 -0
- data/ext/link_grammar/link-grammar/.deps/regex-morph.Plo +131 -0
- data/ext/link_grammar/link-grammar/.deps/resources.Plo +203 -0
- data/ext/link_grammar/link-grammar/.deps/spellcheck-aspell.Plo +1 -0
- data/ext/link_grammar/link-grammar/.deps/spellcheck-hun.Plo +115 -0
- data/ext/link_grammar/link-grammar/.deps/string-set.Plo +198 -0
- data/ext/link_grammar/link-grammar/.deps/tokenize.Plo +160 -0
- data/ext/link_grammar/link-grammar/.deps/utilities.Plo +222 -0
- data/ext/link_grammar/link-grammar/.deps/word-file.Plo +201 -0
- data/ext/link_grammar/link-grammar/.deps/word-utils.Plo +212 -0
- data/ext/link_grammar/link-grammar/.libs/analyze-linkage.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/and.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/api.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/build-disjuncts.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/command-line.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/constituents.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/count.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/disjunct-utils.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/disjuncts.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/error.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/expand.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/extract-links.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/fast-match.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/idiom.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/jni-client.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java-symbols.expsym +31 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.4.dylib +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.4.dylib.dSYM/Contents/Info.plist +20 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.4.dylib.dSYM/Contents/Resources/DWARF/liblink-grammar-java.4.dylib +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.a +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar-java.dylib +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar-symbols.expsym +194 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar.4.dylib +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar.4.dylib.dSYM/Contents/Info.plist +20 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar.4.dylib.dSYM/Contents/Resources/DWARF/liblink-grammar.4.dylib +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar.a +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar.dylib +0 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar.la +41 -0
- data/ext/link_grammar/link-grammar/.libs/liblink-grammar.lai +41 -0
- data/ext/link_grammar/link-grammar/.libs/massage.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/post-process.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/pp_knowledge.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/pp_lexer.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/pp_linkset.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/prefix.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/preparation.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/print-util.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/print.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/prune.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/read-dict.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/read-regex.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/regex-morph.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/resources.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/spellcheck-aspell.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/spellcheck-hun.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/string-set.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/tokenize.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/utilities.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/word-file.o +0 -0
- data/ext/link_grammar/link-grammar/.libs/word-utils.o +0 -0
- data/ext/link_grammar/link-grammar/Makefile +900 -0
- data/ext/link_grammar/link-grammar/Makefile.am +202 -0
- data/ext/link_grammar/link-grammar/Makefile.in +900 -0
- data/ext/link_grammar/link-grammar/analyze-linkage.c +1317 -0
- data/ext/link_grammar/link-grammar/analyze-linkage.h +24 -0
- data/ext/link_grammar/link-grammar/and.c +1603 -0
- data/ext/link_grammar/link-grammar/and.h +27 -0
- data/ext/link_grammar/link-grammar/api-structures.h +362 -0
- data/ext/link_grammar/link-grammar/api-types.h +72 -0
- data/ext/link_grammar/link-grammar/api.c +1887 -0
- data/ext/link_grammar/link-grammar/api.h +96 -0
- data/ext/link_grammar/link-grammar/autoit/.DS_Store +0 -0
- data/ext/link_grammar/link-grammar/autoit/README +10 -0
- data/ext/link_grammar/link-grammar/autoit/_LGTest.au3 +22 -0
- data/ext/link_grammar/link-grammar/autoit/_LinkGrammar.au3 +545 -0
- data/ext/link_grammar/link-grammar/build-disjuncts.c +487 -0
- data/ext/link_grammar/link-grammar/build-disjuncts.h +21 -0
- data/ext/link_grammar/link-grammar/command-line.c +458 -0
- data/ext/link_grammar/link-grammar/command-line.h +15 -0
- data/ext/link_grammar/link-grammar/constituents.c +1836 -0
- data/ext/link_grammar/link-grammar/constituents.h +26 -0
- data/ext/link_grammar/link-grammar/corpus/.DS_Store +0 -0
- data/ext/link_grammar/link-grammar/corpus/.deps/cluster.Plo +1 -0
- data/ext/link_grammar/link-grammar/corpus/.deps/corpus.Plo +1 -0
- data/ext/link_grammar/link-grammar/corpus/Makefile +527 -0
- data/ext/link_grammar/link-grammar/corpus/Makefile.am +46 -0
- data/ext/link_grammar/link-grammar/corpus/Makefile.in +527 -0
- data/ext/link_grammar/link-grammar/corpus/README +17 -0
- data/ext/link_grammar/link-grammar/corpus/cluster.c +286 -0
- data/ext/link_grammar/link-grammar/corpus/cluster.h +32 -0
- data/ext/link_grammar/link-grammar/corpus/corpus.c +483 -0
- data/ext/link_grammar/link-grammar/corpus/corpus.h +46 -0
- data/ext/link_grammar/link-grammar/count.c +828 -0
- data/ext/link_grammar/link-grammar/count.h +25 -0
- data/ext/link_grammar/link-grammar/disjunct-utils.c +261 -0
- data/ext/link_grammar/link-grammar/disjunct-utils.h +27 -0
- data/ext/link_grammar/link-grammar/disjuncts.c +138 -0
- data/ext/link_grammar/link-grammar/disjuncts.h +13 -0
- data/ext/link_grammar/link-grammar/error.c +92 -0
- data/ext/link_grammar/link-grammar/error.h +35 -0
- data/ext/link_grammar/link-grammar/expand.c +67 -0
- data/ext/link_grammar/link-grammar/expand.h +13 -0
- data/ext/link_grammar/link-grammar/externs.h +22 -0
- data/ext/link_grammar/link-grammar/extract-links.c +625 -0
- data/ext/link_grammar/link-grammar/extract-links.h +16 -0
- data/ext/link_grammar/link-grammar/fast-match.c +309 -0
- data/ext/link_grammar/link-grammar/fast-match.h +17 -0
- data/ext/link_grammar/link-grammar/idiom.c +373 -0
- data/ext/link_grammar/link-grammar/idiom.h +15 -0
- data/ext/link_grammar/link-grammar/jni-client.c +779 -0
- data/ext/link_grammar/link-grammar/jni-client.h +236 -0
- data/ext/link_grammar/link-grammar/liblink-grammar-java.la +42 -0
- data/ext/link_grammar/link-grammar/liblink-grammar.la +41 -0
- data/ext/link_grammar/link-grammar/link-features.h +37 -0
- data/ext/link_grammar/link-grammar/link-features.h.in +37 -0
- data/ext/link_grammar/link-grammar/link-grammar-java.def +31 -0
- data/ext/link_grammar/link-grammar/link-grammar.def +194 -0
- data/ext/link_grammar/link-grammar/link-includes.h +465 -0
- data/ext/link_grammar/link-grammar/link-parser.c +849 -0
- data/ext/link_grammar/link-grammar/massage.c +329 -0
- data/ext/link_grammar/link-grammar/massage.h +13 -0
- data/ext/link_grammar/link-grammar/post-process.c +1113 -0
- data/ext/link_grammar/link-grammar/post-process.h +45 -0
- data/ext/link_grammar/link-grammar/pp_knowledge.c +376 -0
- data/ext/link_grammar/link-grammar/pp_knowledge.h +14 -0
- data/ext/link_grammar/link-grammar/pp_lexer.c +1920 -0
- data/ext/link_grammar/link-grammar/pp_lexer.h +19 -0
- data/ext/link_grammar/link-grammar/pp_linkset.c +158 -0
- data/ext/link_grammar/link-grammar/pp_linkset.h +20 -0
- data/ext/link_grammar/link-grammar/prefix.c +482 -0
- data/ext/link_grammar/link-grammar/prefix.h +139 -0
- data/ext/link_grammar/link-grammar/preparation.c +412 -0
- data/ext/link_grammar/link-grammar/preparation.h +20 -0
- data/ext/link_grammar/link-grammar/print-util.c +87 -0
- data/ext/link_grammar/link-grammar/print-util.h +32 -0
- data/ext/link_grammar/link-grammar/print.c +1085 -0
- data/ext/link_grammar/link-grammar/print.h +16 -0
- data/ext/link_grammar/link-grammar/prune.c +1864 -0
- data/ext/link_grammar/link-grammar/prune.h +17 -0
- data/ext/link_grammar/link-grammar/read-dict.c +1785 -0
- data/ext/link_grammar/link-grammar/read-dict.h +29 -0
- data/ext/link_grammar/link-grammar/read-regex.c +161 -0
- data/ext/link_grammar/link-grammar/read-regex.h +12 -0
- data/ext/link_grammar/link-grammar/regex-morph.c +126 -0
- data/ext/link_grammar/link-grammar/regex-morph.h +17 -0
- data/ext/link_grammar/link-grammar/resources.c +180 -0
- data/ext/link_grammar/link-grammar/resources.h +23 -0
- data/ext/link_grammar/link-grammar/sat-solver/.DS_Store +0 -0
- data/ext/link_grammar/link-grammar/sat-solver/.deps/fast-sprintf.Plo +1 -0
- data/ext/link_grammar/link-grammar/sat-solver/.deps/sat-encoder.Plo +1 -0
- data/ext/link_grammar/link-grammar/sat-solver/.deps/util.Plo +1 -0
- data/ext/link_grammar/link-grammar/sat-solver/.deps/variables.Plo +1 -0
- data/ext/link_grammar/link-grammar/sat-solver/.deps/word-tag.Plo +1 -0
- data/ext/link_grammar/link-grammar/sat-solver/Makefile +527 -0
- data/ext/link_grammar/link-grammar/sat-solver/Makefile.am +29 -0
- data/ext/link_grammar/link-grammar/sat-solver/Makefile.in +527 -0
- data/ext/link_grammar/link-grammar/sat-solver/clock.hpp +33 -0
- data/ext/link_grammar/link-grammar/sat-solver/fast-sprintf.cpp +26 -0
- data/ext/link_grammar/link-grammar/sat-solver/fast-sprintf.hpp +7 -0
- data/ext/link_grammar/link-grammar/sat-solver/guiding.hpp +244 -0
- data/ext/link_grammar/link-grammar/sat-solver/matrix-ut.hpp +79 -0
- data/ext/link_grammar/link-grammar/sat-solver/sat-encoder.cpp +2811 -0
- data/ext/link_grammar/link-grammar/sat-solver/sat-encoder.h +11 -0
- data/ext/link_grammar/link-grammar/sat-solver/sat-encoder.hpp +381 -0
- data/ext/link_grammar/link-grammar/sat-solver/trie.hpp +118 -0
- data/ext/link_grammar/link-grammar/sat-solver/util.cpp +23 -0
- data/ext/link_grammar/link-grammar/sat-solver/util.hpp +14 -0
- data/ext/link_grammar/link-grammar/sat-solver/variables.cpp +5 -0
- data/ext/link_grammar/link-grammar/sat-solver/variables.hpp +829 -0
- data/ext/link_grammar/link-grammar/sat-solver/word-tag.cpp +159 -0
- data/ext/link_grammar/link-grammar/sat-solver/word-tag.hpp +162 -0
- data/ext/link_grammar/link-grammar/spellcheck-aspell.c +148 -0
- data/ext/link_grammar/link-grammar/spellcheck-hun.c +136 -0
- data/ext/link_grammar/link-grammar/spellcheck.h +34 -0
- data/ext/link_grammar/link-grammar/string-set.c +169 -0
- data/ext/link_grammar/link-grammar/string-set.h +16 -0
- data/ext/link_grammar/link-grammar/structures.h +498 -0
- data/ext/link_grammar/link-grammar/tokenize.c +1049 -0
- data/ext/link_grammar/link-grammar/tokenize.h +15 -0
- data/ext/link_grammar/link-grammar/utilities.c +847 -0
- data/ext/link_grammar/link-grammar/utilities.h +281 -0
- data/ext/link_grammar/link-grammar/word-file.c +124 -0
- data/ext/link_grammar/link-grammar/word-file.h +15 -0
- data/ext/link_grammar/link-grammar/word-utils.c +526 -0
- data/ext/link_grammar/link-grammar/word-utils.h +152 -0
- data/ext/link_grammar/link_grammar.c +202 -0
- data/ext/link_grammar/link_grammar.h +99 -0
- data/grammar_cop.gemspec +24 -0
- data/lib/.DS_Store +0 -0
- data/lib/grammar_cop.rb +9 -0
- data/lib/grammar_cop/.DS_Store +0 -0
- data/lib/grammar_cop/dictionary.rb +19 -0
- data/lib/grammar_cop/linkage.rb +30 -0
- data/lib/grammar_cop/parse_options.rb +32 -0
- data/lib/grammar_cop/sentence.rb +36 -0
- data/lib/grammar_cop/version.rb +3 -0
- data/test/.DS_Store +0 -0
- data/test/grammar_cop_test.rb +27 -0
- 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
|
+
|